2014-11-12 5 views
2

반환되는 행 또는 결과 집합이 0 인 경우에도 PostgreSQL 8.2의 함수에서 NO_DATA_FOUND 예외를 트리거 할 수 없습니다.postgreSQL에서 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

최신 버전의 Postgres로 업데이트하는 것이 좋습니다. 8.2는 2011 년 12 월에 '줄의 끝'에 도달했습니다. –

답변

2

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 절, 다음 설정하는 대상에 지정되지 않은 쿼리에서 반환하거나 쿼리가 행을 반환하지 않으면 null로 설정합니다. 엄격한 옵션을 지정하면

, 쿼리, 하나 NO_DATA_FOUND (NO 행) 또는 TOO_MANY_ROWS (둘 이상의 행을) 정확히 한 행 또는 런타임 오류가보고됩니다 반환해야합니다.

관련 문제