为什么这有效:
ALTER DATABASE TEST2 MODIFY FILE ( NAME = TEST1, NEWNAME = TEST2, FILENAME = 'C:\Data\TEST2')
但这不起作用:
DECLARE @PATH NVARCHAR(255)
SET @PATH = 'C:\Data\TEST2'
ALTER DATABASE TEST2 MODIFY FILE ( NAME = TEST1, NEWNAME = TEST2, FILENAME = @PATH)
我收到错误:
消息 102,级别 15,状态 1,第 5 行 “@PATH”附近的语法不正确。
最佳答案
我相信这是因为 ALTER
细节,当您显式指定一个值时,它将是一个常量,如果是变量 - 值将在运行时解析。
无论如何,您可以使用动态 Sql 传递自定义变量值:
DECLARE @name varchar(128)
DECLARE @query varchar(255)
SET @name = '...'
SET @query = 'ALTER DATABASE TEST2 MODIFY FILE ( NAME = TEST1, NEWNAME = TEST2, FILENAME = '
+ @name
+ ')'
EXEC(@query)
关于sql - 为什么我不能使用变量代替字符串作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9584844/