Что такое "*; 1" в значении TADOStoredProc.ProcedureName в Delphi? - PullRequest
9 голосов
/ 07 декабря 2011

Вы можете указать TADOStoredProc.ProcedureName в Delphi со следующим значением:

MSSQLProcedureName;1

Но что означает "; 1" в этом значении?

Спасибо за помощь!

1 Ответ

11 голосов
/ 07 декабря 2011

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

Если вы не укажете число в операторе create procedure, по умолчанию оно будет 1. Некоторые из различных слоев доступа к данным, которые вызывают SQL Server, будут явно добавлять ;1 при выполнении хранимой процедуры.

От MSDN :

;*number*

Необязательное целое число, используемое для группировки процедур с одинаковым именем, поэтому их можно удалить вместе с одним оператором DROP PROCEDURE. Например, процедуры, используемые в приложении под названием заказы, могут иметь имя orderproc; 1, orderproc; 2 и т. д. Заявление DROP ПРОЦЕДУРА orderproc отбрасывает всю группу. Если имя содержит идентификаторы с разделителями, число не должно быть частью идентификатор; используйте соответствующий разделитель вокруг имя_процесса только.

...