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