如何在描述符中插入SQLSET类型?
首先,我准备并使用绑定变量声明游标:
select * from account where aco_no in ( ? ) and ..;
我的目标是取代'?'在带有帐户列表的打开游标中('123','234')。语句的游标准备一次(服务器启动),然后用不同的数据(帐户列表的大小)打开几次(服务启动)。我的目标是使用IN()运算符准备游标并将帐户列表作为绑定变量传递。
打开是声明:
$OPEN :cur USING SQL DESCRIPTOR :descWhere;
其中descWhere是由service(set descriptor statements)创建的描述符。
如果我使用简单类型(SQLCHAR itp),它的效果很好。 EXP:
$SET DESCRIPTOR :desc VALUE :size
TYPE = :type,
LENGTH = :NO_LEN;
$SET DESCRIPTOR :desc VALUE :size
DATA = :szBuffor;
如何插入描述符类型SQLSET,SQLLIST,..如果可以完成它是否工作IN()运算符?
答案 0 :(得分:0)
在我看来,在你的情况下使用描述符是一个错误。描述符是一种在编写代码时不知道语句时应该使用的机制,例如:当您不知道将选择何种类型的数据时。
在您的情况下,您应该在运行时声明,打开并执行您的语句作为普通的动态SQL语句。通常声明游标不会给你带来太多的性能优势(与select的成本相比)。如果你需要更多的性能选择我会建议检查array fetch而不是使用光标。
无论如何,如果您更喜欢使用游标,请记住CLOSE游标和FREE描述语句不超过可用内存。
检查此article以进行性能调整。