在 Teradata 的存储过程中设置会话模式



运行此过程时,

CREATE PROCEDURE SP_DISABLE_TRIGGER(
in p_database varchar(50), in p_trigger_name varchar(50))
BEGIN
DECLARE L_SQL VARCHAR(1000);    

set l_sql='alter trigger ' ||p_database|| '.' ||p_trigger_name|| ' DISABLED';
EXECUTE IMMEDIATE L_SQL;   
commit;    END;

我收到此错误:

SPL1027:E(L30),缺少/无效的 SQL 语句'E(5510):过程执行的会话模式无效。

[执行时间:2016/1/3 15:50:30] [执行时间:0毫秒]

谁能告诉我如何在程序中设置会话模式?

5510 程序執行的傳程模式無效。

解释:提交 CALL SQL 的会话模式不同于在其中创建存储过程的那个。存储过程在 ANSI 模式下创建无法在 Teradata 模式下执行,并且 Vice反之亦然。

不能在过程中设置会话

模式,这是在登录时设置的,不能在会话中修改。

如果确实需要在 Teradata 和 ANSI 模式下运行此 SP,则必须创建两个版本,每个会话模式中一个版本。

当我使用 Teradata Studio 客户端创建存储过程并使用 DBeaver sql 客户端首次调用时,我开始遇到此问题。我通过创建/替换存储的 proc 然后从同一个 sql 客户端 DBeaver 第一次调用它来解决此错误。

最新更新