2014-01-22 46 views
0

我遇到了嘗試使用orasql中的列表的問題。還有另一種方法可以做到嗎?我知道我可以通過使用foreach循環,並將值設置爲字符串變量,但我認爲這將花費更長的時間與所有這些小分貝拉。我也可以運行一個查詢,但我不是DBM,我似乎無法讓查詢時間縮短,這比我在這裏佈局的要複雜得多,而且我需要用戶儘快提取查詢。 我怎樣才能做這樣的事情:SQL中的TCL列表或變量

orasql $DB(db) "select this from this_table" 
orafetch $DB(db) { 
    lappend list1 @1 
} 
orasql $DB(db) "select that from that_table where this in ($list1)" 
orafetch $DB(db) { 
    lappend that @1 
} 

回答

1

難道這就是你想幹什麼?

select that 
from that_table 
where this in (select this from this_table); 
+0

我可以這樣做,但效率很低,因爲查詢很複雜。另外,我不會總是用第二個跑第一個。這就是爲什麼我需要IN子句中的變量。當我嘗試去做上面的事情時,我得到一個錯誤,指出類似「String literal too long」這意味着sql不會將它用作列表。 –

+1

一般來說,將服務器的結果傳遞給應用程序放入列表中以回饋給服務器似乎是個不錯的主意。最好找到一個能滿足你需求的查詢。 –

+0

感謝您的建議。我已經要求SE:DBM查看我的查詢。 –