【发布时间】:2016-06-29 21:58:28
【问题描述】:
大师,我有存储过程必须在动态表上执行。这是存储过程的样子。
create or replace PROCEDURE EFX_RECON_UPDATE_SPROC(
FILENAME IN VARCHAR2 ,
SOURCE IN VARCHAR2 )
AS
TABLE_NAME VARCHAR2(200);
query_str VARCHAR2(500);
cnt NUMBER(10);
BEGIN
-- Create dynamic table for each fullfilment system.
TABLE_NAME := SOURCE||'_BRM_OMC_RECON_T';
query_str :='SELECT count(*) from ' || SOURCE || '_BRM_OMC_RECON_T where PROCESSINGFILENAME='''||FILENAME||''';';
EXECUTE IMMEDIATE query_str;
query_str:='MERGE INTO '||TABLE_NAME||' T
USING (
SELECT
ERRORCODE, PROCESSINGFILENAME,
RECORDNUMBER from ERROR_UPLOAD_T
) TMP
ON (T.RECORDNUMBER = TMP.RECORDNUMBER and
T.PROCESSINGFILENAME= TMP.PROCESSINGFILENAME and
T.PROCESSINGFILENAME='''||FILENAME||''')
WHEN MATCHED THEN
UPDATE SET
T.STATUS = ''ERROR'',
T.ERRORSOURCE = ''BRM'',
T.ERRORCODE = TMP.ERRORCODE';
EXECUTE IMMEDIATE query_str;
COMMIT;
END EFX_RECON_UPDATE_SPROC;
我在执行存储过程时收到此错误。问题出在FILENAME 上,我已将其括在“引号”中。
ORA-00933:SQL 命令未正确结束
ORA-06512:在“PIN149.EFX_RECON_UPDATE_SPROC”,第 12 行
【问题讨论】:
-
在执行之前打印出 SQL 语句。对我来说,语法错误不是很明显,但是一旦你打印出你构建的 SQL 语句,它可能就会出现。
标签: stored-procedures oracle11g