如何在尝试以下操作时声明数据库:
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)]
的原因是,如果我们更改数据库名称,我们不必在代码中更改它,因为我们使用此引用来调用数据库而不是数据库自称。
答案 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