Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何从存储过程返回表?_Sql_Sql Server_Stored Procedures - Fatal编程技术网

Sql 如何从存储过程返回表?

Sql 如何从存储过程返回表?,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,这是一个非常简单的问题 我试图从存储过程返回一个表,如 select * from emp where id=@id 我想将此查询结果作为表返回。我必须通过存储过程来执行此操作。您的问题在哪里 对于存储过程,只需创建: CREATE PROCEDURE dbo.ReadEmployees @EmpID INT AS SELECT * -- I would *strongly* recommend specifying the columns EXPLICITLY FROM dbo

这是一个非常简单的问题

我试图从存储过程返回一个表,如

select * from emp where id=@id

我想将此查询结果作为表返回。我必须通过存储过程来执行此操作。

您的问题在哪里

对于存储过程,只需创建:

CREATE PROCEDURE dbo.ReadEmployees @EmpID INT
AS
   SELECT *  -- I would *strongly* recommend specifying the columns EXPLICITLY
   FROM dbo.Emp
   WHERE ID = @EmpID
就这些了

从ASP.NET应用程序中,只需创建一个
SqlConnection
和一个
SqlCommand
(不要忘记设置
CommandType=CommandType.storedProcess


然后用该数据填充例如
数据表
,并将其绑定到例如GridView。

在SQL Server 2008中,您可以使用

或者简单且与普通执行相同

CREATE PROCEDURE OrderSummary @MaxQuantity INT OUTPUT AS

SELECT Ord.EmployeeID, SummSales = SUM(OrDet.UnitPrice * OrDet.Quantity)
FROM Orders AS Ord
     JOIN [Order Details] AS OrDet ON (Ord.OrderID = OrDet.OrderID)
GROUP BY Ord.EmployeeID
ORDER BY Ord.EmployeeID

SELECT @MaxQuantity = MAX(Quantity) FROM [Order Details]

RETURN (SELECT SUM(Quantity) FROM [Order Details])
GO

我希望它能对您有所帮助

包括以下内容非常重要:

 SET NOCOUNT ON;
进入SP,在第一行, 如果在SP中执行
INSERT
,则
END SELECT
无法返回值

然后,在vb60中,您可以:

SET RS = CN.EXECUTE(SQL)
或:


为什么需要将结果作为表格?你的推理会改变我想的答案。你想返回一个到另一个程序@Anand Thangappan:我正在从我的ASP.NET应用程序调用此SP。这在更复杂的情况下有效,谢谢!您好,如果我需要该表位于声明的输出参数中,该怎么办。能做到吗?哪个是该输出的数据类型?@GuillermoVarini:不,您不能将整个表作为输出参数发回,当前不支持该输出参数如果您有多个
select/select-into
语句用于执行某些计算/etc,但只希望最后一个
select
返回该表怎么办?这是默认情况吗?
SET RS = CN.EXECUTE(SQL)
RS.OPEN CN, RS, SQL