首页 > 解决方案 > ORA-00923 FROM 关键字未指定

问题描述

我知道这个问题有很多答案,但老实说,我真的找不到任何解决我的问题的方法,而且我真的看不出我做错了什么。

我正在尝试通过选择和一些更改插入一些数据,但每次我得到这个 FROM 关键字时都找不到例外

我尝试以不同的方式多次引用它,但效果不佳,我知道我选择的“正常”工作。

exec :='INSERT INTO TALEND_CONTEXT_GROUP (PROJECT_ID,CONTEXT_NAME,CONTEXT_TYPE,CONTEXT_DESC,ENV_ID,DATE_CREATION,USER_CREATION)
SELECT PROJECT_ID, CONTEXT_NAME, CONTEXT_TYPE, CONTEXT_DESC, '||New_Env_Id||', '||Current_Date||',USER_CREATION 
FROM TALEND_CONTEXT_GROUP
WHERE PROJECT_ID = '||Project_Id||'';
EXECUTE IMMEDIATE(exec) ;

当然,这里使用的 2 个变量正在工作并返回 2 个数字

我希望它只是在同一个表中插入几乎相同的数据,除了更改ENV_IDDATE_CREATION

标签: oracleplsql

解决方案


我认为你有一个,数字 - 最好使用绑定然后连接:

EXECUTE IMMEDIATE 'INSERT INTO TALEND_CONTEXT_GROUP (PROJECT_ID,CONTEXT_NAME,CONTEXT_TYPE,CONTEXT_DESC,ENV_ID,DATE_CREATION,USER_CREATION)
SELECT PROJECT_ID, CONTEXT_NAME, CONTEXT_TYPE, CONTEXT_DESC, :New_Env_Id, :CURRENT_DATE,USER_CREATION 
FROM TALEND_CONTEXT_GROUP
WHERE PROJECT_ID = :Project_Id' using New_Env_Id, CURRENT_DATE, Project_Id;

那么你为什么还要使用动态sql呢?为什么不直接:

INSERT INTO TALEND_CONTEXT_GROUP (PROJECT_ID,CONTEXT_NAME,CONTEXT_TYPE,CONTEXT_DESC,ENV_ID,DATE_CREATION,USER_CREATION)
SELECT PROJECT_ID, CONTEXT_NAME, CONTEXT_TYPE, CONTEXT_DESC, New_Env_Id, CURRENT_DATE,USER_CREATION 
FROM TALEND_CONTEXT_GROUP
WHERE PROJECT_ID = Project_Id;

推荐阅读