我们遇到的情况是需要使用类似于此的存储过程将值插入到多个表中:
DROP TABLE informix.myTable;
GO
CREATE TABLE informix.myTable (id SERIAL NOT NULL, my_field DECIMAL(7,0))
GO
DROP PROCEDURE informix.Insert_Into_Table;
GO
CREATE PROCEDURE "informix".Insert_Into_Table (pTable_name CHAR(30), pValue DECIMAL(7,0))
RETURNING INTEGER;
-- EXECUTE informix.Insert_Into_Table('myTable', 12345)
DEFINE cust_qry VARCHAR(250);
DEFINE new_id INTEGER;
LET cust_qry = 'insert into informix.' || pTable_name || ' ( my_field ) values ( ? )';
PREPARE stmt_id FROM cust_qry;
EXECUTE stmt_id USING pValue;
SELECT DBINFO('sqlca.sqlerrd1')
INTO new_id
FROM systables WHERE owner = 'informix' AND tabname = pTable_name;
FREE stmt_id;
RETURN new_id;
END PROCEDURE;
我们在EXECUTE USING行中遇到语法错误(它编译注释该行)。
我们需要从过程中检索SERIAL id,并且最好使用USING子句,因为在现实世界中有> 100个值(如pValue)。
IBM在线文档显示EXECUTE USING主变量,但我们找不到使用存储过程参数的任何示例。
Informix版本:IBM Informix Dynamic Server版本12.10.FC10WE
有关如何解决该错误的任何指示? 提前致谢