這是非常簡單的問題。如何從存儲過程返回表?
我試圖從一個存儲過程返回一個表,像
select * from emp where [email protected]
我想回到這個查詢結果表。我必須通過存儲過程來做到這一點。
這是非常簡單的問題。如何從存儲過程返回表?
我試圖從一個存儲過程返回一個表,像
select * from emp where [email protected]
我想回到這個查詢結果表。我必須通過存儲過程來做到這一點。
你的問題在哪裏?
存儲過程,只需創建:
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.StoredProcedure
)
DataTable tblEmployees = new DataTable();
using(SqlConnection _con = new SqlConnection("your-connection-string-here"))
using(SqlCommand _cmd = new SqlCommand("ReadEmployees", _con))
{
_cmd.CommandType = CommandType.StoredProcedure;
_cmd.Parameters.Add(new SqlParameter("@EmpID", SqlDbType.Int));
_cmd.Parameters["@EmpID"].Value = 42;
SqlDataAdapter _dap = new SqlDataAdapter(_cmd);
_dap.Fill(tblEmployees);
}
YourGridView.DataSource = tblEmployees;
YourGridView.DataBind();
然後填寫例如一個DataTable
與該數據並將其綁定到例如一個GridView。
嗨,如果我需要該表是在聲明的輸出參數,那麼呢?可以做到嗎?這是輸出的數據類型? – 2016-11-10 17:23:54
@GuillermoVarini:不,你不能發回整個表作爲輸出參數,目前不支持 – 2016-11-10 19:05:30
在SQL Server 2008中您可以使用
http://www.sommarskog.se/share_data.html#tableparam
否則簡單,同普通的執行
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
不能返回值。
THEN, in vb60 you can
SET RS = CN.EXECUTE(SQL)
OR
RS.OPEN CN,RS, SQL
這適用於更復雜的情況,謝謝! – Chisko 2016-08-27 21:17:22
爲什麼你需要的結果的表?你的推理會改變我的想法。 – Brian 2011-04-09 12:06:34
你想要回到另一個程序! – 2011-04-09 12:16:37
@Anand Thangappan:我從ASP.NET應用程序中調用此SP。 – jams 2011-04-09 12:18:30