Как создать объект (функцию), если имя базы данных определено в переменной режима SQLCMD? - PullRequest
1 голос
/ 23 января 2012

Мой SQL выглядит так:

:SETVAR VAR_DB_NAME DatabaseName.DBO

SELECT * FROM $(VAR_DB_NAME).tableName

Если я попытаюсь сделать:

CREATE FUNCTION $(VAR_DB_NAME).FunctionName

Я получаю сообщение об ошибке:

CREATE / ALTER FUNCTION 'не позволяет указывать имя базы данных как префикс к имени объекта

Как я могу проверить, существует ли функция, и создать / удалить ее, используя ту же переменную?

1 Ответ

1 голос
/ 23 января 2012

Как говорится в сообщении об ошибке, вы не можете включить имя базы данных в оператор CREATE. Это работает:

:SETVAR VAR_DB_NAME DatabaseName
:SETVAR VAR_SCHEMA_NAME dbo

use $(VAR_DB_NAME)
go

create function $(VAR_SCHEMA_NAME).foo()
returns int
as 
begin
return (1)
end
go

В любом случае было бы лучше использовать две переменные: по моему мнению, переменная с именем "DB_NAME" не должна (неправильно) использоваться для включения имени схемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...