如何声明数据库

时间:2015-12-29 08:14:50

标签: sql sql-server

如何在尝试以下操作时声明数据库:

declare @Database1 [$(Database1)]

它声明了列,参数或变量#8:找不到数据类型Database1'。

更新:

所以我要做的是创建一个变量,使它引用一个数据库,然后我可以在OUTPUT语句中包含该变量。我使用visual studio,我使用引用来调用数据库,但希望将该引用设置为变量:

目前我有:

declare @Database1 [$(Database1)]

...

OUTPUT ''+@Database1+'.dbo.Package' 'TableName', 'PackageID', inserted.PackageId, 
        Core.updXMLFragment ('StatusID', inserted.StatusID, Deleted.StatusID)
        INTO @OutputList

就像我说的那样,当我尝试上述操作时出现错误。我知道[$(Database1)]是对数据库的合法引用,只需知道如何将其包含在OUTPUT语句中,这样当我移动SSMS时,它会将其显示为[Database1]而不是错误。

[$(Database1)]的原因是,如果我们更改数据库名称,我们不必在代码中更改它,因为我们使用此引用来调用数据库而不是数据库自称。

2 个答案:

答案 0 :(得分:1)

尝试使用Dynamic SQL

DECLARE @Database SYSNAME = 'master'

DECLARE @SQL NVARCHAR(MAX)
SET @SQL = '
USE ' + QUOTENAME(@Database) + '

SELECT DB_NAME()
'

--PRINT @SQL
EXEC sys.sp_executesql @SQL

答案 1 :(得分:1)

可以使用sqlcmd Tool来声明相同内容。

:setvar dbname "TEST" 

CREATE DATABASE $(dbname)
GO
ALTER DATABASE $(dbname) SET COMPATIBILITY_LEVEL = 90
GO
ALTER DATABASE $(dbname) SET RECOVERY SIMPLE 
GO