sql – 调用一个返回refcursor的函数
发布时间:2020-05-23 09:59:38 所属栏目:MsSql 来源:互联网
导读:我使用 Postgresql 8.3,并具有以下简单的函数,将返回一个refcursor到客户端 CREATE OR REPLACE FUNCTION function_1() RETURNS refcursor AS $$DECLARE ref_cursor REFCURSOR;BEGIN OPEN ref_cursor FOR SELECT * FROM s
|
我使用 Postgresql 8.3,并具有以下简单的函数,将返回一个refcursor到客户端 CREATE OR REPLACE FUNCTION function_1() RETURNS refcursor AS $$
DECLARE
ref_cursor REFCURSOR;
BEGIN
OPEN ref_cursor FOR SELECT * FROM some_table;
RETURN (ref_cursor);
END;
$$LANGUAGE plpgsql;
现在,我可以使用以下SQL命令调用此函数并操作返回的游标,但游标名称由PostgreSQL自动生成 BEGIN; SELECT function_1(); --It will output the generated cursor name,for example,"<unnamed portal 11>" ; FETCH 4 from "<unnamed portal 11>"; COMMIT; 此外,明确声明游标名称作为函数的输入参数,如38.7.3.5. Returning Cursors.Can所述.我声明自己的游标名称,并使用此游标名称来操作返回的游标而不是Postgresql为我自动生成?如果没有,有没有可以获得生成的游标名称的命令? 解决方法是的,使用:CREATE OR REPLACE FUNCTION function_1(refcursor) RETURNS refcursor AS $$
BEGIN
OPEN $1 FOR SELECT * FROM some_table;
RETURN $1;
END;
$$LANGUAGE plpgsql;
结果: SELECT function_1('myowncursorname');
function_1
-----------------
myowncursorname
(1 row)
看起来自动生成的名称是< unnamed portal n>,其中n是自然数(从1). 编辑: 另一种方法可以使用这样查询的 SELECT name FROM pg_cursors WHERE statement LIKE 'SELECT * FROM some_table'; 例如: BEGIN; SELECT function_1(); SELECT name FROM pg_cursors WHERE statement LIKE 'SELECT * FROM some_table'; COMMIT; 结果: function_1
--------------------
<unnamed portal 3>
(1 row)
name
--------------------
<unnamed portal 3>
(1 row) (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql-server – 作为一名DBA,我将如何从Oracle转换到SQL Ser
- sql-server – 如何在SQL中创建REPLACE PATTERN?
- MySQL中distinct语句的基本原理及其与group by的比较
- 单元测试 – 单元测试时,是否必须使用数据库来测试CRUD操作
- alter table alter SQL的SQL Server性能更改数据类型
- sql-server – Sql Server – 如何获取上次服务器重启(DMV重
- sql-server – nvarchar(Unicode)列的COLLATIONS的要点是什
- mysql cmd常用命令
- sql – 获取上一小时的记录
- sql-server – 如何在存储过程中将两个查询联合起来以获得一
