【发布时间】:2021-12-27 10:46:49
【问题描述】:
我想用这个代码调用一个名称在变量中的存储过程:
DECLARE
spName text;
varIn1 text;
varIn2 text;
varOut text;
varSQLQuery text;
BEGIN
spName := 'myProc';
varIn1 := 'Value1';
varIn2 := 'Value2';
varSQLQuery := format('CALL myschema.%s(varIn1,varIn2,varOut);',spName,);
RAISE NOTICE 'varSQLQuery %', varSQLQuery;
EXECUTE varSQLQuery;
RAISE NOTICE 'varOut %', varOut;
如果我将来自 varSQLQuery 的打印查询复制并粘贴到代码中,它们就可以工作。 但它在 EXECUTE 函数中不起作用。
错误是:“列“varIn1”不存在”。
我也试过这个:
varSQLQuery := format('CALL myschema.%s(varIn1,varIn2,varOut);',spName);
EXECUTE IMMEDIATE varSQLQuery;
varSQLQuery := format('
BEGIN
CALL myschema.%s(varIn1,varIn2,varOut);
END;'
,spName);
EXECUTE varSQLQuery;
varSQLQuery := format('myschema.%s(varIn1,varIn2,varOut);',spName);
EXECUTE varSQLQuery;
varSQLQuery := format('myschema.%s(varIn1,varIn2,varOut);',spName);
CALL varSQLQuery;
我没有更多新想法了。
那么,如何使用(或不使用?)EXECUTE 函数在变量中调用具有名称的存储过程?
【问题讨论】:
标签: postgresql procedure execute