今天帮同事写了一个小的数据库存储过程的DEMO,发现有两种不同的执行语句的实现方式。
列出如下。
1、有时候我们利用数据库的存储过程来执行一些比较耗时间的SELECT操作,存储过程类似于函数,它可以单独执行。以下为执行方式一,支持SQL语句的动态拼接。
CREATE OR REPLACE FUNCTION func_test() RETURNS INTEGER AS
$BODY$
DECLARE
sqlstr VARCHAR;
number INTEGER;
BEGIN
sqlstr = 'SELECT COUNT(*) FROM tbl_res';
EXCUTE sqlstr INTO number;
RETURN 0;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
2、有时候我们想对结果集遍历操作,可以用如下偷懒方式。
CREATE OR REPLACE FUNCTION func_test() RETURNS INTEGER AS
$BODY$
DECLARE
sqlstr VARCHAR;
result RECORD;
BEGIN
sqlstr = 'SELECT * FROM tbl_res';
FOR result IN EXCUTE sqlstr LOOP
END LOOP;
RETURN 0;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
转载于:https://blog.51cto.com/gooner/1216242