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 的下载 ID。在第二个游标中,我试图获取具有 downloadid 列的表,并且这些表名应以 IPCSDD 或 IPCSCUSTDD 开头。

现在我必须编写一个查询,以便在从游标 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 回答