2014-02-11 48 views
0

我有一個查詢,看起來像這樣:蟾蜍爲Oracle綁定變量與IN子句

select * from foo where id in (:ids) 

其中ID列是一個數字。

當蟾蜍版本11.0.0.116運行此,我希望提供ID的列表中,這樣生成的查詢是:

select * from foo where id in (1,2,3) 

下頭腦簡單的方法給出了一個錯誤,1,2,3不是有效的浮點數。是否有一個類型/值的組合,可以讓我運行所需的查詢?

CLARIFICATION:查詢如圖所示,它是如何出現在我的代碼中的,我將它粘貼到TOAD中,用於測試具有各種值的查詢結果。到目前爲止,我只是使用逗號分隔的列表在TOAD中對綁定變量進行了文本替換,並且此工作正常,但對於嘗試不同的值列表有點麻煩。另外,我對這種形式的幾個查詢以這種方式進行測試,所以我正在尋找一種不太人性化的方式來在TOAD中輸入值列表而不修改查詢。如果這是不可能的,我會繼續採用行人方式。

toad variable prompt

+1

[sqlplus - 在「IN」子句中使用綁定變量)的可能重複(http://stackoverflow.com/questions/4973809/sqlplus-using-a-bind-variable-in-in-clause) – OldProgrammer

+0

I看不出這是如何與這個問題重複的。你是否說過Gerrat的回答是:「你不能在一個綁定變量中使用逗號分隔的值」適用於上面的TOAD對話框,就像它適用於那裏顯示的PL/SQL塊一樣? – pierus

+0

這是正確的。它與TOAD無關。您必須使用其他方法將字符串「分解」爲單個數據項(如重複答案中所示),或者在查詢中使用單獨的變量,例如「in(:v1,:v2,:v3 ...) ; – OldProgrammer

回答

1

正如OldProgrammer所示,Gerrat的回答是,在指定的線程「你不能在一個綁定變量使用逗號分隔值」正確地回答了這個問題爲好。