Stored procedures 使用teradata存储过程插入的值错误
我有一个存储过程,其中我显式捕获一个特定错误,即无效的Emp名称 当出现这种情况时,我将Stored procedures 使用teradata存储过程插入的值错误,stored-procedures,insert,teradata,Stored Procedures,Insert,Teradata,我有一个存储过程,其中我显式捕获一个特定错误,即无效的Emp名称 当出现这种情况时,我将消息文本和SQLSTATE设置为特定值 然后退出处理程序退出并向存储过程的调用者显示
消息文本
和SQLSTATE
设置为特定值
然后退出处理程序退出并向存储过程的调用者显示
&消息文本。这是我希望发生的事情,它按预期工作。但是,我也在日志表中插入一行,作为退出处理程序的一部分,并且由于某些原因,插入到日志表中的值在末尾附加了额外的字符,即
提供的员工姓名无效提供的员工姓名
而不是
提供的员工姓名无效。
如果我将消息硬编码到日志表中,它会工作,但我不想这样做。发送给存储过程调用方的消息工作正常
下面的参考代码
任何援助都将是巨大的
REPLACE PROCEDURE SecAppl.Create_User_SL
(p_UserName CHAR(7)
,p_Password VARCHAR(30)
,p_EmpName VARCHAR(70) /* First Name then Surname */
,p_EmailAddr VARCHAR(100)
)
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
SET vSQL_ERR_CDE = SQLCODE;
SET vSQL_STATE = SQLSTATE;
SET vSQL_ERR_MSG = '';
GET DIAGNOSTICS EXCEPTION 1 vSQL_ERR_MSG = MESSAGE_TEXT;
INSERT INTO Log_Table
VALUES (p_UserName, 'SQLEXCEPTION' , :SQLCODE, :SQLSTATE, vSQL_ERR_MSG, CURRENT_TIMESTAMP);
RESIGNAL; -- Send message back to caller of Proc
END;
IF p_EmpName = ''
THEN SIGNAL SQLSTATE VALUE 'U0001' SET MESSAGE_TEXT = 'Invalid Employee Name provided';
END IF;
END;