2014-11-28 6 views
2

Я нашел этот код в моей работе:@parameter = @parameter синтаксис (SQL Server)

exec dbo.get_name @id = @id, @name = @name output 

Что это значит? Я не смог найти примеры с использованием этого синтаксиса и никакой информации на страницах Microsoft.

+1

[EXECUTE (Transact-SQL)] (http://msdn.microsoft.com/en-us/ библиотека/ms188332.aspx) – GSerg

ответ

5

При выполнении StoredProcedure, параметры могут быть переданы в другом порядке, чем определено в порядке. Вы должны использовать @parameterName, чтобы указать, какой параметр передан в какой позиции.

Есть две отдельных вещей в вашем коде:

  1. Процедура ожидает @id и @name параметры
  2. Там находятся две локальные переменные с тем же именем в вас вызов модуля.

код может быть может быть более понятным, если оно было написано так:

exec dbo.get_name @id = @customerId, @name = @customerName output 
3

В @id = @id первый @id является именованным параметром для хранимой процедуры dbo.get_name.

Вторая @id - это локальная переменная, которая предоставляет значение для параметра.

1

Это означает, что хранимая процедура dbo.get_name выполнена, а @id = @id означает, что вы передаете @id локальное значение в параметр ввода @id и @name = @name означает, что вы хотите, чтобы выходной параметр @name назначал выведите значение в локальную переменную @name.

1

Вот что значит

  • exec dbo.get_name - выполнить хранимые имена процедур get_name
  • @id = @id - Вы прок принимает @Id параметра и перед вызовом этого прок необходимо определил переменный под названием @Id и asssigned некоторого значение для него. Итак, это значение, которое вы передаете процессу.
  • @name = @name output - То же, что и выше, за исключением того, что значение в @name будет изменено, и вы получите значение @name post, выполняющего proc как вывод. Это как возвращаемое значение после выполнения процедуры.

Подробности о том же являются here

2

человек, который писал, что код, используемый локальные переменные с тем же именем из параметров хранимой процедуры.
вы найдете где-то в этом коде декларирование этих локальных переменных:

declare @id int; 
declare @name varchar(50); 
. 
. 
[some more code here] 
. 
. 
. 
exec dbo.get_name @id = @id, @name = @name output