如何处理 refcursor 不检索 PGSQL 中的数据
how to handle refcursor not retrieving data in PGSQL
如何处理 PGSQL 中的 refcursor 不检索数据(空结果集)?
create or replace function function_1( In tblname varchar(15))
returns refcursor
language plpgsql
as $$
declare
v_cnt integer;
r_ref refcursor='ref2';
v_sql text='select * from tbl where 1=2';--default statement;shld return empty if
--input is invalid
begin
if tblname ilike 'scientist' then
v_sql:='select * from tbl'; --table name 1
end if;
open r_ref for
execute v_sql;
return r_ref;
end;
$$;
有没有不使用动态sql的其他处理方式?
执行:测试用例 1:应该 return 清空结果集
select * from function_1('invalid');
fetch all in "ref2";
执行:测试用例 2:应该 return 来自 able
的正确数据
select * from function_1('scientist');
fetch all in "ref2";
谢谢
当您只有一个测试用例要覆盖时,您不需要动态查询 = 'scientist'。在这种情况下,你可以简单地做:
create or replace function function_1( In tblname varchar(15))
returns setof scientist language plpgsql as $$
begin
if tblname ilike 'scientist' then
return query
select * from scientist ;
end if;
end;
$$;
如何处理 PGSQL 中的 refcursor 不检索数据(空结果集)?
create or replace function function_1( In tblname varchar(15))
returns refcursor
language plpgsql
as $$
declare
v_cnt integer;
r_ref refcursor='ref2';
v_sql text='select * from tbl where 1=2';--default statement;shld return empty if
--input is invalid
begin
if tblname ilike 'scientist' then
v_sql:='select * from tbl'; --table name 1
end if;
open r_ref for
execute v_sql;
return r_ref;
end;
$$;
有没有不使用动态sql的其他处理方式? 执行:测试用例 1:应该 return 清空结果集
select * from function_1('invalid');
fetch all in "ref2";
执行:测试用例 2:应该 return 来自 able
的正确数据select * from function_1('scientist');
fetch all in "ref2";
谢谢
当您只有一个测试用例要覆盖时,您不需要动态查询 = 'scientist'。在这种情况下,你可以简单地做:
create or replace function function_1( In tblname varchar(15))
returns setof scientist language plpgsql as $$
begin
if tblname ilike 'scientist' then
return query
select * from scientist ;
end if;
end;
$$;