SELECT select_expressions INTO [STRICT] target FROM ...;
SELECT * INTO myrec FROM emp WHERE empname = myname;IF NOT FOUND THEN RAISE EXCEPTION 'employee % not found', myname;END IF;
BEGIN SELECT * INTO STRICT myrec FROM emp WHERE empname = myname; EXCEPTION WHEN NO_DATA_FOUND THEN RAISE EXCEPTION 'employee % not found', myname; WHEN TOO_MANY_ROWS THEN RAISE EXCEPTION 'employee % not unique', myname;END;
create table strict_test_tb (id int,content varchar);create or replace function test_no_strict() returns varchar as $$ declare param1 strict_test_tb%rowtype; begin begin select * into param1 from strict_test_tb; EXCEPTION WHEN NO_DATA_FOUND THEN RAISE EXCEPTION 'param1 % not found', '1'; WHEN TOO_MANY_ROWS THEN RAISE EXCEPTION 'param1 % not unique', '2'; when others then RAISE exception 'other unkown exception'; end; RAISE notice 'param1 is %',param1; return null;end; $$ language plpgsql; create or replace function test_has_strict() returns varchar as $$ declare param1 strict_test_tb%rowtype;begin begin select * into strict param1 from strict_test_tb; EXCEPTION WHEN NO_DATA_FOUND THEN RAISE EXCEPTION 'param1 % not found', '1'; WHEN TOO_MANY_ROWS THEN RAISE EXCEPTION 'param1 % not unique', '2'; end; raise notice 'param1 is %',param1; return null;end;$$ language plpgsql;
highgo=# select * from strict_test_tb; id | content ----+---------(0 rows)highgo=# select test_no_strict();NOTICE: param1 is (,) test_no_strict ---------------- (1 row)highgo=# select test_has_strict();ERROR: param1 1 not found CONTEXT: PL/pgSQL function test_has_strict() line 10 at RAISE
highgo=# select test_no_strict();NOTICE: param1 is (1,1) test_no_strict ---------------- (1 row)highgo=# select test_has_strict();NOTICE: param1 is (1,1) test_has_strict -----------------(1 row)
highgo=# select test_no_strict();NOTICE: param1 is (1,1) test_no_strict ---------------- (1 row)highgo=# select test_has_strict();ERROR: param1 2 not unique CONTEXT: PL/pgSQL function test_has_strict() line 12 at RAISE
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69994931/viewspace-2885541/ ,如需转载,请注明出处,否则将追究法律责任。