2015-01-08 178 views
1

如何在描述符中插入SQLSET類型?描述符中的SQLSET數據類型

首先,我準備和申報遊標綁定變量:「?」

select * from account where aco_no in (?) and ..; 

我的目標是取代在打開的光標與帳戶列表('123','234')。遊標語句準備一次(服務器啓動),然後用不同的數據(賬戶列表大小)多次打開(服務啓動)。我的目標是使用IN()運算符準備遊標並將帳戶列表作爲綁定變量傳遞。

公開賽是由聲明:

$OPEN :cur USING SQL DESCRIPTOR :descWhere; 

凡descWhere是服務(集描述語句)創建一個描述符。

它,如果我用簡單的工種以及 EXP(ITP SQLCHAR):

$SET DESCRIPTOR :desc VALUE :size 
      TYPE = :type, 
      LENGTH = :NO_LEN; 
$SET DESCRIPTOR :desc VALUE :size 
       DATA = :szBuffor; 

如何插入的描述符類型SQLSET,SQLLIST ..如果是可以做到的是它的工作女巫IN()運營商?

+0

我會做的第一件事是檢查你是否可以在IN(...)'子句的括號內使用一個文字SET,然後讓它工作。如果這是有效的,那麼花時間處理描述符方法是值得的。如果SET文字不起作用,那麼在工作上花時間毫無意義。 –

回答

0

在我看來,在你的情況下使用描述符是一個錯誤。描述符是一種機制,當您在編寫代碼時不知道自己的聲明時應該使用這種機制,例如:當您不知道您選擇哪種類型的數據時。

在你的情況下,你應該聲明,在運行時打開並執行你的語句作爲正常的動態SQL語句。通常聲明遊標並沒有給你帶來太多的性能好處(與選擇代價相比)。如果你需要更多的選擇我會建議檢查array fetch而不是使用光標。

無論如何,如果您更喜歡使用遊標,請記住關閉遊標和FREE描述語句以避免超出可用內存。

請檢查此article以進行性能調整。