描述符中的SQLSET数据类型

时间:2015-01-08 16:20:04

标签: c informix embedded-sql

如何在描述符中插入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()运算符?

1 个答案:

答案 0 :(得分:0)

在我看来,在你的情况下使用描述符是一个错误。描述符是一种在编写代码时不知道语句时应该使用的机制,例如:当您不知道将选择何种类型的数据时。

在您的情况下,您应该在运行时声明,打开并执行您的语句作为普通的动态SQL语句。通常声明游标不会给你带来太多的性能优势(与select的成本相比)。如果你需要更多的性能选择我会建议检查array fetch而不是使用光标。

无论如何,如果您更喜欢使用游标,请记住CLOSE游标和FREE描述语句不超过可用内存。

检查此article以进行性能调整。