簡體   English   中英

如何在SELECT中執行CREATE Oracle SQL語句?

[英]How can i execute an CREATE Oracle SQL statement in a SELECT?

這是SQL:

    select 'create table XX_' || replace(replace(trim(table_id),'-','_'),'%','X') || '_LOOKUP as select * from prn_tcodes where trim(table_id) = ''' || trim(table_id) || ''';'
from  prn_tcodes
group by table_id;

我想要執行的結果SQL語句,有沒有辦法?

我正在使用Oracle 10g

謝謝,,,

作為假脫機的替代方法,您可以將其作為匿名PL / SQL塊運行(未經測試!)

DECLARE 
  cursor all_codes 
      select 'create table XX_' || 
             replace(replace(trim(table_id),'-','_'),'%','X') || 
             '_LOOKUP as select * from prn_tcodes where trim(table_id) = ''' ||
             trim(table_id) as sql_stmt
      from  prn_tcodes
      group by table_id;

   rec all_codes%ROWTYPE;
BEGIN
   FOR rec IN get_objects LOOP
   BEGIN
      EXECUTE IMMEDIATE rec.sql_stmt;
   END LOOP;
END;
/

(請注意,生成的語句不包含結尾;更多)

將上述腳本假脫機到一個文件,然后執行該文件。

spool myoutput.sql

-- Your SQL here

spool off;
@myoutput;

您要執行動態SQL,因此請簽出execute immediate在此處此處查看更多信息)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM