即使返回的行或结果集为零,我也无法从PostgreSql 8.2中的函数触发异常NO_DATA_FOUND。
这是我的代码;
CREATE OR REPLACE FUNCTION func_ex() RETURNS trigger AS
$func_ex$
DECLARE
var_name name;
BEGIN
Select empname INTO var_name from emp_table1 WHERE empid = 161232;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RAISE EXCEPTION 'No data found';
RETURN NEW;
END;
return new
$func_ex$ LANGUAGE plpgsql;
-- End of Function
-- Creation of Trigger
CREATE TRIGGER insert_trigger1 AFTER update of empname
ON emp_table1 EXECUTE PROCEDURE func_ex();
-- insertion enteries.
INSERT INTO emp_table1 (empid, empname, salary) values (124, ' Sapmle_CustormerName', '3000');
答案 0 :(得分:3)
要触发NO_DATA_FOUND
例外使用:
Select empname INTO STRICT var_name from emp_table1 WHERE empid = 161232;
详细信息:http://www.postgresql.org/docs/current/static/plpgsql-statements.html
如果未在INTO子句中指定STRICT,则将设置target 到查询返回的第一行,如果是查询则返回null 没有返回任何行。
如果指定了STRICT选项,则查询必须返回一个 将报告行或运行时错误,NO_DATA_FOUND(否 (行)或TOO_MANY_ROWS(多行)。