2014-04-01 77 views
0

我有以下代碼,我正在使用一個變量將值列表傳遞給多個sql語句(我無法保存在表中,因爲我不'有權限,不希望在所有的Sql部分都保留這個列表)Oracle Sql開發人員...在DEFINE語句中使用Continuations字符

只要所有的值都在一行上,它就可以正常工作......但是因爲我有這麼多值;我想將它拆分成多行並使用連字符「 - 」

我跑Oracle Sql Developer 2.1.1.64Oracle 10g(我也是在PL/Sql Developer嘗試這樣做,它在那裏失敗了也一樣)

--========================================= 

    define subclasses = ('10-1010-10','10-1010-15','10-1010-20', - 

    '10-1010-25','10-1010-30') --- there are another 60 values... 


    select item from item_master where ((subclass) in &&subclasses); 

    Select Price from Item_prices where ((subclass) in &&subclasses); 

--========================================= 

我收到以下錯誤

ORA-01722: invalid number 
01722. 00000 - "invalid number" 

,因爲它是解析代碼

select item from item_master where ((subclass) in ('10-1010-10','10-1010-15', 
'10-1010-20', -'10-1010-25','10-1010-30')) 

...在SQL中保留繼續代碼' - '.... tho它會轉到值的第二行

如果我刪除' - '...它只處理第一行,並解析爲

select item from item_master where ((subclass) in ('10-1010-10','10-1010-15','10-1010-20',) 

...失去了第二個值的第n行(並引發錯誤,因爲它端w /「」和不具有最終‘)’)

謝謝

回答

1

你可以這樣做:

column subc new_value subclasses 

select q'[('10-1010-10','10-1010-15','10-1010-20', 
'10-1010-25','10-1010-30')]' as subc 
from dual; 

現在&subclasses.將包含所有的代碼。

NB我使用q'[']'引號語法來避免將數據中的所有引號加倍。

+1

添加'noprint'到'c​​olumn'線將停止打印出來的字符串,這可能使更多一點愉快;如果你還沒有這樣做,那麼'set verify off'可能會有助於隱藏替換。 (對於OP的好處,顯然,我很確定託尼知道這一點... * 8-) –

+0

謝謝 - 只是嘗試以下... column subc new_value subclasses select q'[('10-1010-10','10-1010-15','10-1010-20','10-1010-25','10-1010-30' ,'10-1010-35','10-1010-40','10-1010-45','10-1015-10','10-1015-15','10-1015-20',' 10-1015-25','10-1015-30','10-1015-35','10-1015-40','10-1015-45','10-1020-10','10 - 1020-15','10-1020-20','10-1020-25','10-1020-30','10-1020-35','10-1020-40','10-1020- 45','10-1020-50','10-1020-55','10-1020-60','10-1020-65')]'作爲來自雙重的子集; 從item_master中選擇項目其中(&&子類中的子類); – user3485782

+0

但它仍然提示子類: 解析的SQL顯示了item_master 選擇項,其中(以空子類) 所以纔沒有在&&子類拉在所有 THANKS值 – user3485782

0

我能得到續行符的工作,因爲它應該,如果我使用雙 -

Define Subclasses = ('10-1010-10','10-1010-15',-- 
'10-1010-20','10-1010-25') 

我從來沒有能夠得到

Column subc new_value Subclasses 

select q'[('10-1010-10','10-1010-15','10-1010-20', 
'10-1010-25','10-1010-30')]' as subc 
from dual; 

工作。它繼續提示的子類,而不是接受值...

THANKS