postgresql 存储过程返回结果

chenqing1985 2008-11-26 05:46:22
看了说明文档,想到如果我想这样:
select * from table1;
我想返回查找到的结果集,怎么实现呢~
文档上说select * from table1只是返回一个行结果,是这样吗?
...全文
752 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenqing1985 2008-11-27
  • 打赏
  • 举报
回复
我用cmd.CommandText = “select * from proc_test1() as t(id int,name varchar)“
可以,除了直接这样调用SQL语句还有什么其他的方法吗?
chenqing1985 2008-11-27
  • 打赏
  • 举报
回复
大概理解了,有个问题
select * from proc_test1() as t(id int,name varchar);
as t(id int,name varchar);作用只是显示出来吗?这里的t是不是只是个临时的表结构之类的?
如果我想在程序中得到这个结果集怎么做呢?
我的理解:
OdbcCommand cmd = null;
cmd = myConnection.CreateCommand();
cmd.CommandText = "{}";//这里的{}中应该填入什么呢?才能实现下面的功能
结果集 x = cmd.ExecuteNonQuery()
xbt746 2008-11-27
  • 打赏
  • 举报
回复
setof record
关键是这个set of
集合
也可以用于其他类型


xbt746 2008-11-27
  • 打赏
  • 举报
回复
没有用过odbc
mschen 2008-11-26
  • 打赏
  • 举报
回复
--PostgreSQL不能简单的在存储过程里边select数据返回,只能通过return next的方式返回行集,如下为测试语句:

--创建测试表
create table test1(id int,name varchar);

--插入测试数据
insert into test1 values(1,'abc');
insert into test1 values(2,'def');

--创建返回结果集的存储过程
CREATE OR REPLACE FUNCTION proc_test1()
RETURNS setof record AS
$BODY$

declare
v_rc record;
begin

for v_rc in select * from test1
loop
return next v_rc;
end loop;

return;

end;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;

--调用存储过程
select * from proc_test1() as t(id int,name varchar);

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧