以下三个函数等价
CREATE OR REPLACE FUNCTION func_mppd30101() RETURNS INTEGER AS
$BODY$
BEGIN
perform * FROM t WHERE id = 3;
if not found then
INSERT INTO t VALUES (3);
end if;
return 0;
END;
$BODY$
LANGUAGE 'plpgsql' ;
如果改成select,则报以下错误
ERROR: query has no destination for result data
HINT: If you want to discard the results of a SELECT, use PERFORM instead.
CREATE OR REPLACE FUNCTION func_mppd30101() RETURNS INTEGER AS
$BODY$
declare
a int;
BEGIN
select * FROM t WHERE id = 3 into a;
if not found then
INSERT INTO t VALUES (3);
end if;
return 0;
END;
$BODY$
LANGUAGE 'plpgsql' ;
CREATE OR REPLACE FUNCTION func_mppd30101() RETURNS INTEGER AS
$BODY$
BEGIN
if (not exists (select * FROM t WHERE id = 4)) then
INSERT INTO t VALUES (4);
end if;
return 0;
END;
$BODY$
LANGUAGE 'plpgsql' ;
更多推荐
postgresql函数变形
发布评论