Какова роль ключевого слова exec в T-SQL?Ключевое слово exec SQL
Я попытался
EXEC sp_rename 'mytable.foo', 'bar', 'column';
/* and */
sp_rename 'mytable.foo', 'bar', 'column';
Обе команды, полученной, казалось бы, тот же самый результат.
Какова роль ключевого слова exec в T-SQL?Ключевое слово exec SQL
Я попытался
EXEC sp_rename 'mytable.foo', 'bar', 'column';
/* and */
sp_rename 'mytable.foo', 'bar', 'column';
Обе команды, полученной, казалось бы, тот же самый результат.
Ключевое слово EXEC указывает SQL, что вы хотите запустить хранимую процедуру, функцию или строку символов. Синтаксис можно найти здесь: https://msdn.microsoft.com/en-us/library/ms188332.aspx
EXEC необходим для использования транзакционного SQL, когда вы хотите динамически строить инструкцию SQL. Общей практикой для этого является построение оператора sql во временной строке переменной, а затем используйте ключевое слово EXECUTE для его выполнения.
т.е. DECLARE @SQL VARCHAR (MAX)
DECLARE @DynamicColumnName VARCHAR (20)
DECLARE @SomeDatabase VARCHAR (20)
ВЫБОР @DynamicColumnName = 'Столбец1'
SELECT @SomeDatabase = 'MyDB'
SELECT @SQL = 'USE' + @ SomeDatabase + 'INSERT INTO #NewTable SELECT '+ @ DyanmicColumnName + ' FROM MyTable'
EXEC (@SQL)
выше будет выполнять следующее заявление: «USE MyDB INSERT INTO #NewTable ВЫБОР Column1 FROM Mytable '
Что касается GO, это команда, чтобы закончить партию операторов. Это может быть использовано для различных причин, но я хотел бы начать свое исследование здесь: https://msdn.microsoft.com/en-us/library/ms188037.aspx
Если EXEC XXX
это первое заявление в вашей партии, а затем с помощью EXEC
не является обязательным, и вы можете просто вызвать XXX
без использования EXEC
. Но если EXEC
не является первым оператором в вашей партии, вам следует указать EXEC
, чтобы позвонить XXX
. Однако лучше всего использовать его в любой ситуации, так как это может повысить читаемость вашего кода.
Также, какова роль ключевого слова GO? Кажется, это не играет никакой роли. –
В документации четко разъясняется, что такое EXEC. https://msdn.microsoft.com/en-us/library/ms188332.aspx –
И GO НЕ является ключевым словом. Это разделитель партий по умолчанию в SSMS. –