0
Gurus、私は動的テーブルで実行する必要があるプロシージャを格納しています。ストアドプロシージャの外観は次のとおりです。Oracleの動的ストアドプロシージャ
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文を出力してしまう可能性があります。 –