2012-11-28 57 views
0

在Pl SQL中,我通過選擇其他表來創建表,但沒有得到結果。給了我一些想法來解決這個問題。我的部分代碼。在Pl SQL中如何通過選擇其他表來創建表

   sqlstring :=q'[ create table sbs pll 8 nologging as 
    select /*+parallel(e,8)*/ 
    e.* from event_t e 
    where 
    pid_id0 >= to_char(pin23.pin_convert.unix_to_rt_pid (pin23.pin_convert.string_to_unix_ts((trunc(sysdate)),'dd/mm/yy'))) 
    and poid_type in ('/event/billing/payment/voucher') ]' ; 
+1

任何錯誤消息? –

+1

你只是將命令分配給一個字符串變量,還是你執行它?如果是這樣,請顯示代碼。 – Codo

+0

錯誤:PLS-00103:遇到下列其中一項時遇到符號「DD」: – Bharathi

回答

0

你必須使用「」

+0

其獲取錯誤 ORA-00972:identifier is太長了 – Bharathi

+0

什麼是你的sqlstring聲明你能告訴我那個嗎? –

0

這裏是一個小的測試案例應該給你,你有什麼需要逃避的代碼中使用單引號:

create table event_t 
(event_id  number 
, pid_id0  number 
, poid_type varchar2(100) 
); 

我創建這個,因爲我不知道你的event_t表的結構,除了我可以從你的代碼中確定。

然後在PL/SQL這個工程:

declare 
    sqlstring varchar2(4000); 

begin 
    sqlstring := q'[create table sbs parallel 8 nologging as 
        select /*+ parallel(e, 8) */ 
          e.* 
        from event_t e 
        where pid_id0 >= 5 
        and poid_type in ('/event/billing/payment/voucher')]'; 

    execute immediate sqlstring; 
end; 

然後你可以從SBS選擇。

我不得不更改pid_id0謂詞,因爲我沒有包。

希望這會有所幫助。

+0

感謝Miguel-F,沒有意識到我的代碼已經失去了格式。 – mjs

相關問題