0

これが私のコードです:

create or replace
procedure postGateway (flgManual in nvarchar2, segmentID in number) as
sequel string(2000); 


  cursor download_cursor is
    select downloadid from ipcsdd_download_process where status LIKE 'W' OR status 

LIKE 'E';



 cursor table_cursor is

   select table_name from user_tab_columns where column_name = 'DOWNLOADID' and 

table_name like 'IPCSDD%' OR table_name like 'IPCSCUSTDD' group by table_name;

begin       

    for download in download_cursor
    loop
        dbms_output.put_line('DownloadID: ' || download.downloadid );

      for usertable in table_cursor
     loop

sequel:=' select * FROM'||usertable.table_name||'where downloadid='||download.downloadid;
execute immediate sequel;
      dbms_output.put_line(' select * from'||usertable.table_name||'where downloadid='||download.downloadid);  
    end loop;   

  end loop;

end postGateway ;

ここで行っていることは次のとおりです。最初のカーソルでは、ステータスが W または E の downloadid を取得しようとしています。

ここで、カーソル 2 から取得した IPCSDD から始まるすべてのテーブルで、カーソル 1 から取得した downloadid のデータが存在するかどうかを確認する必要があるようなクエリを作成する必要があります。動的 SQL を記述しようとしましたが、エラーが発生します「00923.00000 - 「FROM キーワードが期待される場所に見つかりませんでした」」と言っています。

どうすればこれを達成できますか?

ありがとう

4

1 に答える 1

0

FROM の後のスペースと where の前のスペースを使用して、キーワードの前後にスペースを追加するのを単に怠っただけです。

sequel:=' select * FROM '||usertable.table_name||' where downloadid='||download.downloadid;
于 2013-11-11T05:51:22.270 に答える