SQL Server2008中调用存储过程结果集的问题

nightgoblin 2012-04-11 01:00:20
我写了个存储过程是输出一个结果集,但是调用的时候缺只有一行数据,看代码:

USE tempdb;
GO
IF OBJECT_ID('a') IS NOT NULL
DROP TABLE a;
GO
--创建表a
CREATE TABLE a
(a1 INT ,
a2 INT );
GO
--插入数据
INSERT INTO a VALUES (1,1);
INSERT INTO a VALUES (2,2);
INSERT INTO a VALUES (3,3);
INSERT INTO a VALUES (4,4);
INSERT INTO a VALUES (5,5);
GO
IF OBJECT_ID('spa') IS NOT NULL
DROP PROCEDURE spa;
GO
--创建spa过程
CREATE PROCEDURE spa
@a1 INT OUTPUT ,
@a2 INT OUTPUT
AS
BEGIN
SELECT @a1=a1,@a2=a2 FROM a;
END;
GO
--调用过程
DECLARE @a1 INT ,
@a2 INT
EXEC spa @a1 OUTPUT ,@a2 OUTPUT ;
SELECT @a1,@a2;
--结果显示
(无列名) (无列名)
5 5

看只有一行数据,怎样才能调用这个结果集呢?高手请指点。
...全文
238 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
nightgoblin 2012-04-12
  • 打赏
  • 举报
回复
感谢各位的回答,我知道怎么做了。
IT-Style 2012-04-11
  • 打赏
  • 举报
回复
用一个存储过程就OK了...
不行发一下你其它表结构及想要实现的功能.
迪迦凹凸曼 2012-04-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

引用 3 楼 的回复:
你的两个输出参数@a1,@a2都是int 类型,而你想返回一个结果集,有点矛盾哦

那按照我的意思,应该怎样写这个SQL语句呢?是需要用到表值参数吗?
[/Quote]
你没必要为了这个结果集写给存储过程吧,
你在另一个存储过程中直接写这句话SELECT a1,a2 FROM a;
不行吗,把查询的结果存到一个table变量中,就可以用了
nightgoblin 2012-04-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
你的两个输出参数@a1,@a2都是int 类型,而你想返回一个结果集,有点矛盾哦
[/Quote]
那按照我的意思,应该怎样写这个SQL语句呢?是需要用到表值参数吗?
迪迦凹凸曼 2012-04-11
  • 打赏
  • 举报
回复
你的两个输出参数@a1,@a2都是int 类型,而你想返回一个结果集,有点矛盾哦
nightgoblin 2012-04-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
SQL code
IF OBJECT_ID('spa') IS NOT NULL
DROP PROCEDURE spa;
GO
--创建spa过程
CREATE PROCEDURE spa
AS
BEGIN
SELECT a1,a2 FROM a;
END;
exec spa
[/Quote]
但是我另外的存储过程调用@a1,@a2这两个参数的。
快溜 2012-04-11
  • 打赏
  • 举报
回复
IF OBJECT_ID('spa') IS NOT NULL 
DROP PROCEDURE spa;
GO
--创建spa过程
CREATE PROCEDURE spa
AS
BEGIN
SELECT a1,a2 FROM a;
END;
exec spa

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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