Sql server 如果在SQLCMD模式变量中定义了数据库名称,如何创建对象(函数)?
我的SQL如下所示:Sql server 如果在SQLCMD模式变量中定义了数据库名称,如何创建对象(函数)?,sql-server,database,function,sqlcmd,Sql Server,Database,Function,Sqlcmd,我的SQL如下所示: :SETVAR VAR_DB_NAME DatabaseName.DBO SELECT * FROM $(VAR_DB_NAME).tableName 如果我尝试这样做: CREATE FUNCTION $(VAR_DB_NAME).FunctionName 我得到一个错误: “创建/更改函数”不允许将数据库名称指定为 对象名称的前缀 如何检查函数是否存在并使用相同的变量创建/删除它?正如错误所述,create语句中不能包含数据库名称。这项工作: :SETVAR VA
:SETVAR VAR_DB_NAME DatabaseName.DBO
SELECT * FROM $(VAR_DB_NAME).tableName
如果我尝试这样做:
CREATE FUNCTION $(VAR_DB_NAME).FunctionName
我得到一个错误:
“创建/更改函数”不允许将数据库名称指定为
对象名称的前缀
如何检查函数是否存在并使用相同的变量创建/删除它?正如错误所述,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”的变量来包含架构名称。正如错误所述,不能在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
无论如何,这里最好使用两个变量:在我看来,不应该(mis)使用名为“DB_NAME”的变量来包含模式名称