ProC动态SQL EXEC SQL PREPARE sql FROM :c_sql;

看网上说这里的c_sql,不能是一个完整查询语句,应该是类似这种:strcpy(c_sql, "DELETE FROM test WHERE test_col = :?");
想问一下这里的“?”是传入的时候这样?还是proc预编译把语句改成这样的?能不能详细说一下流程。
现在我的问题是DEBUG发现传入的是一个完成查询sql,导致这里这里直接解析失败。

(1)动态SQL1: 不能是查询(SELECT)语句,并且没有宿主变量.
用法:拼一句动态SQL语句,并用EXECUTE IMMEDIATE执行,如:
EXEC SQL EXECUTE IMMEDIATE CREATE TABLE test (test_col VARCHAR2(4));
EXEC SQL EXECUTE IMMEDIATE INSERT INTO TABLE test ('AAAA');
EXEC SQL EXECUTE IMMEDIATE DELETE test WHERE test_col='AAAA';

(2)动态SQL2: 不能是查询(SELECT)语句,并且输入的宿主变量数目是知道的,
用法:拼一句动态SQL语句,用PREPARE,EXECUTE语句执行.
strcpy(sqlstring, "DELETE FROM test WHERE test_col = :?");
EXEC SQL PREPARE sqlproc FROM :sqlstring;
EXEC SQL EXECUTE sqlproc USING :emp_number;
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网