如何解决动态 SQL 调用 Teradata 中的另一个存储过程
我在帮助指南中看到,您不能在没有输出参数的 teradata 动态 sql 语句中使用 call 语句。
有人做过吗?
场景 -
我有一个表格,在某些时候我会根据逻辑字段进行扩展,以便在什么时候运行,并且该表格在其他地方进行管理 -
CREATE TABLE DB.SP_Test
(
ProcName VARCHAR(250),ProcRun VARCHAR(1)
);
现在我添加了 chrTest 作为输出,但是我在运行时仍然出错(没有编译错误)
错误:- sql_State sql_Exception T7689 无效的动态 sql 语句。
REPLACE PROCEDURE DB.Test_Control (OUT chrTest VARCHAR(250) )
sql Security INVOKER
LMain:
BEGIN
DECLARE sqlProcRun VARCHAR(20000);
DECLARE CONTINUE HANDLER
FOR sqlException
BEGIN
-----------------------------------------------------------------------------
DECLARE strExceptionText VARCHAR(250);
GET DIAGNOSTICS EXCEPTION 1 strExceptionText = Message_Text;
INSERT INTO DB.PROC_ERROR VALUES
(
'Test_Control',:sqlState,strExceptionText,Current_Timestamp
)
;
END;
-----------------------------------------------------------------------------
SET sqlProcRun ='';
L0:
FOR procs_run_cursor AS select_list
CURSOR FOR
SELECT Trim(ProcName) AS ProcName
FROM DB.SP_Test
DO
/*creating a lost of call statements to run*/
SET sqlProcRun = sqlProcRun ||'CALL DB.'||procs_run_cursor.ProcName|| '();';
END FOR L0;
EXECUTE IMMEDIATE sqlProcRun;
END;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。