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

时间:2016-03-01 10:27:10

标签: 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;   

commit;    END;

我收到此错误:

  

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

[已执行:2016年1月3日下午3:50:30] [执行:0ms]

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

2 个答案:

答案 0 :(得分:0)

  

5510程序执行的会话模式无效。

     

说明:   提交CALL SQL的会话模式不同于   创建存储过程的那个。存储过程   在ANSI模式下创建的无法在Teradata模式下执行   反之亦然。

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

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

答案 1 :(得分:0)

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