Это очень простой вопрос.
Я пытаюсь вернуть таблицу из хранимой процедуры, например
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();
а затем заполнить, например. a DataTable
с этими данными и связывать его, например. GridView.
В 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, В первой строке,
если вы выполняете INSERT
в SP, END SELECT
не может возвращать значения.
THEN, in vb60 you can
SET RS = CN.EXECUTE(SQL)
ИЛИ
RS.OPEN CN,RS, SQL