2016-05-19 3 views
4

Какова роль ключевого слова exec в T-SQL?Ключевое слово exec SQL

Я попытался

EXEC sp_rename 'mytable.foo', 'bar', 'column'; 
/* and */ 
sp_rename 'mytable.foo', 'bar', 'column'; 

Обе команды, полученной, казалось бы, тот же самый результат.

+0

Также, какова роль ключевого слова GO? Кажется, это не играет никакой роли. –

+4

В документации четко разъясняется, что такое EXEC. https://msdn.microsoft.com/en-us/library/ms188332.aspx –

+4

И GO НЕ является ключевым словом. Это разделитель партий по умолчанию в SSMS. –

ответ

2

Ключевое слово 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

5

Если EXEC XXX это первое заявление в вашей партии, а затем с помощью EXEC не является обязательным, и вы можете просто вызвать XXX без использования EXEC. Но если EXEC не является первым оператором в вашей партии, вам следует указать EXEC, чтобы позвонить XXX. Однако лучше всего использовать его в любой ситуации, так как это может повысить читаемость вашего кода.

Смежные вопросы