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
,要么干脆删除它。