在 SPL 例程中,您必须指定这些参数作为 SPL 变量。
要获取更多信息,请参阅 PREPARE 语句。
如果您知道在运行时要提供的参数的数目和顺序及其数据类型,则可在程序中通过该语句将所需参数定义为主变量。通过以 USING 关键字打开游标,您按位置将参数传递给数据库服务器,后跟依其序列顺序的变量的名称。从左至右,这些变量以一一对应的方式与 SELECT 或 EXECUTE FUNCTION(或 EXECUTE PROCEDURE)语句问号(?)占位符相匹配。
在变量的列表中,您不可包括 ESQL/C 的指示符变量。要使用指示符变量,您必须包括 SELECT 或 EXECUTE FUNCTION(或 EXECUTE PROCEDURE)语句文本作为 DECLARE 语句的一部分,而不是准备好的语句的标识符。
sprintf (select_1, "%s %s %s %s %s", "SELECT o.order_num, sum(total price)", "FROM orders o, items i", "WHERE o.order_date > ? AND o.customer_num = ?", "AND o.order_num = i.order_num", "GROUP BY o.order_num"); EXEC SQL prepare statement_1 from :select_1; EXEC SQL declare q_curs cursor for statement_1; EXEC SQL open q_curs using :o_date, :o.customer_num;
stcopy ("EXECUTE FUNCTION one_func(?, ?)", exfunc_stmt); EXEC SQL prepare exfunc_id from :exfunc_stmt; EXEC SQL declare func_curs cursor for exfunc_id; EXEC SQL open func_curs using :arg1, :arg2;