jam*_*ams 34 sql sql-server stored-procedures
这是一个非常简单的问题.
我试图从存储过程返回一个表,如
select * from emp where id=@id
Run Code Online (Sandbox Code Playgroud)
我想将此查询结果作为表返回.我必须通过存储过程来完成此操作.
mar*_*c_s 57
你的问题在哪里?
对于存储过程,只需创建:
CREATE PROCEDURE dbo.ReadEmployees @EmpID INT
AS
SELECT * -- I would *strongly* recommend specifying the columns EXPLICITLY
FROM dbo.Emp
WHERE ID = @EmpID
Run Code Online (Sandbox Code Playgroud)
这就是全部.
从你的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();
Run Code Online (Sandbox Code Playgroud)
然后用例如a填充DataTable该数据并将其绑定到例如GridView.
小智 6
包括:
SET NOCOUNT ON;
Run Code Online (Sandbox Code Playgroud)
进入SP,在第一行,如果你INSERT在SP 中,END SELECT则不能返回值。
然后,在 vb60 中,您可以:
SET RS = CN.EXECUTE(SQL)
Run Code Online (Sandbox Code Playgroud)
或者:
RS.OPEN CN, RS, SQL
Run Code Online (Sandbox Code Playgroud)
在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
Run Code Online (Sandbox Code Playgroud)
希望对您有帮助