如何返回在 1 个函数中找到的总行数记录
CREATE OR REPLACE FUNCTION some_function(_limit integer, _skip integer, _sortcolumn text, _sortasc boolean)
RETURNS SETOF some_table AS
$BODY$
begin
return query execute 'select * from some_table order by "'||_sortcolumn||'"' ||case when _sortasc then 'asc' else 'desc' end ||' limit $1 offset $2;' using _limit, _skip;
end;
$BODY$
LANGUAGE plpgsql STABLE SECURITY DEFINER
COST 100
ROWS 100;
我想通过引用传递参数,因此我可以将总行数分配给参数。到目前为止我觉得这是不可能的。有什么建议吗?我正在使用 C#
编辑,
我发现“RAISE NOTICE”可能有用。仍然找到一种通过 npgsql 在 .Net 中接收通知的方法
CREATE OR REPLACE FUNCTION some_function(_limit integer, _skip integer, _sortcolumn text, _sortasc boolean)
RETURNS SETOF some_table AS
$BODY$
begin
return query execute 'select * from some_table order by "'||_sortcolumn||'"' ||case when _sortasc then 'asc' else 'desc' end ||' limit $1 offset $2;' using _limit, _skip;
end;
$BODY$
LANGUAGE plpgsql STABLE SECURITY DEFINER
COST 100
ROWS 100;
i want to pass parameter by reference, so i can assign total rows to param. so far i find it impossible. any suggestion? i'm using C#
edit
i found 'RAISE NOTICE' probably useful. still find a way to recieve notice in .Net via npgsql
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
有几种方法可以做到这一点。如果您直接使用命令对象调用此函数,则 ExecuteScalar 函数将返回命令返回的行数。
或者,您可以在函数定义中执行此操作;
如果你询问建筑没问题,那么这个应该工作得很好。
希望这有帮助。
There are several ways to do that. If you are calling this function directly using command object, the ExecuteScalar function returns the number of row returned by the command.
Or, you can do it the in the function definition;
If you query building is ok, then this one should work quite well.
Hope this helps.
您还可以尝试更改您的函数以返回一组引用游标,并返回一个包含行数的结果集和另一个包含您的数据的结果集。
查看 Npgsql 用户手册中的“在 DataSet 对象中获取完整结果:使用引用游标”部分:http://manual.npgsql.org 在那里你会找到如何做到这一点。
我希望它有帮助。
You may also give a try to change your function to return set of refcursors instead and return a resultset with you rows count and another set with your data.
Check out "Getting full results in a DataSet object: Using refcursors" section from Npgsql Users Manual: http://manual.npgsql.org There you'll find how to do that.
I hope it helps.