postgresql – 我可以使一个plpgsql函数返回一个整数,而不使用一
发布时间:2020-12-13 16:27:25 所属栏目:百科 来源:网络整理
导读:这样的事情 CREATE OR REPLACE FUNCTION get(param_id integer) RETURNS integer AS$BODY$BEGINSELECT col1 FROM TABLE WHERE id = param_id;END;$BODY$ LANGUAGE plpgsql VOLATILE COST 100; 我想为此避免一个DECLARE. 是的你可以.有很多方法. 1)RETURN(SEL
这样的事情
CREATE OR REPLACE FUNCTION get(param_id integer) RETURNS integer AS $BODY$ BEGIN SELECT col1 FROM TABLE WHERE id = param_id; END; $BODY$ LANGUAGE plpgsql VOLATILE COST 100; 我想为此避免一个DECLARE.
是的你可以.有很多方法.
1)RETURN(SELECT …) CREATE OR REPLACE FUNCTION get(_param_id integer) RETURNS integer AS $func$ BEGIN RETURN (SELECT col1 FROM TABLE WHERE id = _param_id); END $func$LANGUAGE plpgsql; 2)使用OUT或INOUT参数 CREATE OR REPLACE FUNCTION get(_param_id integer,OUT _col1 integer) RETURNS integer AS -- "RETURNS integer" is optional in this case $func$ BEGIN SELECT INTO _col1 col1 FROM TABLE WHERE id = _param_id; -- also valid,but not as clean: -- _col1 := col1 FROM TABLE WHERE id = _param_id; END $func$LANGUAGE plpgsql; 阅读更多in the manual here. 3)(Ab)使用IN参数 由于PostgreSQL 9.0还可以使用输入参数作为变量.我引用release notes for:
人机工程学: CREATE OR REPLACE FUNCTION get(_param_id integer) RETURNS integer AS $func$ BEGIN SELECT INTO _param1 col1 FROM TABLE WHERE id = _param1; RETURN _param1; -- Also possible,but discouraged: -- $1 := col1 FROM TABLE WHERE id = $1; -- RETURN $1; END $func$LANGUAGE plpgsql; 最后一个你确实使用一个变量,严格来说,但你不必另外声明. 4)使用带有INOUT参数的DEFAULT值 这是一个特殊情况. CREATE OR REPLACE FUNCTION get(_param_id integer,INOUT _col1 integer = 123) RETURNS integer AS $func$ BEGIN -- You can set _col1 to some other value: -- SELECT INTO _col1 col1 FROM TABLE WHERE id = _param_id; -- If you don't,123 will be returned. END $func$LANGUAGE plpgsql; 5)改用纯SQL function CREATE OR REPLACE FUNCTION get(_param_id integer) RETURNS integer AS $func$ SELECT col1 FROM TABLE WHERE id = _param_id; -- use $1 in Postgres 9.1 or older $func$ LANGUAGE sql; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |