Как получить набор записей в SQL Server

#sql-server

#sql-сервер

Вопрос:

Я видел в Oracle SQL, что есть что-то, что называется SYS_REFCURSOR , которое используется в SP для получения a recordset из таблицы

Я хочу сделать то же самое в SQL Server, чтобы я мог с помощью SP получить набор записей определенной таблицы. Я много искал похожие решения, но все, что я видел, связано с Oracle SQL.

Какие-либо предложения, пожалуйста?

PS Чтобы быть более понятным, я хочу просто использовать SP для выбора всех записей вместо обычного запроса.

т.е. вместо использования:

 SELECT * FROM EMP_DEPARTMENT
  

используйте SP, чтобы сделать то же самое.

Ответ №1:

Предполагая, что вы имеете в виду хранимую процедуру с SP, вы можете сделать это :

 create procedure dbo.spMyProcedure as
begin
    set nocount on
    select * from emp_department
end;
  

чем вы можете это сделать :

 exec dbo.spMyProcedure
  

Это то, что вы имеете в виду?

Комментарии:

1. Точно, я думал об этом коде и уже сделал это, но я подумал, что это неэффективный способ сделать это, пожалуйста, еще один вопрос, как я могу получить результат этой процедуры в ASP.NET Код на C #?

2. Если все, что вы делаете в хранимой процедуре, это select * из emp_department, то это не более эффективно, чем прямой вызов select . В этом случае вам было бы лучше создать представление вместо процедуры.

3. Получение результата в c # происходит так же, как и при использовании обычного оператора select . Поместите ‘exec spMyProcedure’ в SqlCommand и просто выполните adapter . Fill(), как вы бы сделали с обычным select

Ответ №2:

В SQL Server вы можете просто инкапсулировать SELECT запрос в хранимую процедуру (используя * только в качестве примера, поскольку лучше всего использовать явный список столбцов):

 CREATE PROC dbo.GetEmployeeDepartments
AS
SELECT * FROM EMP_DEPARTMENT;
GO
  

Клиентский API SQL Server передаст результат в виде набора результатов с быстрой переадресацией, доступного только для чтения, где можно использовать отдельные строки.