日期:2014-05-18  浏览次数:20533 次

SQL Server2008中调用存储过程结果集的问题
我写了个存储过程是输出一个结果集,但是调用的时候缺只有一行数据,看代码:
SQL code

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


看只有一行数据,怎样才能调用这个结果集呢?高手请指点。

------解决方案--------------------
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

------解决方案--------------------
你的两个输出参数@a1,@a2都是int 类型,而你想返回一个结果集,有点矛盾哦

------解决方案--------------------
探讨

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

那按照我的意思,应该怎样写这个SQL语句呢?是需要用到表值参数吗?

------解决方案--------------------
用一个存储过程就OK了...
不行发一下你其它表结构及想要实现的功能.