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

Tsql 在Teradata中的存储过程内设置会话模式,tsql,plsql,triggers,teradata,Tsql,Plsql,Triggers,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;

在运行此过程时

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日下午3:50:30][执行时间:0毫秒]

有人能告诉我如何在过程中设置会话模式吗

5510过程执行的会话模式无效

说明:该 提交调用SQL的会话模式不同于 在其中创建存储过程的存储过程。存储过程 在ANSI模式下创建的文件不能在Teradata模式下执行,反之亦然 反之亦然

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


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

当我使用Teradata Studio client创建存储过程并首次使用DBeaver sql client调用时,我开始出现此问题。我通过创建/替换存储的进程,然后第一次从同一个sql客户机DBeaver调用它,解决了这个错误。

这是关于这个主题的有用资源。这是由于Studio中愚蠢的
TMODE=ANSI
默认连接设置造成的。要么切换到
TMODE=DEFAULT
,要么干脆删除它。