如何在 SQL 中使用 varchar 变量?
How to use varchar variable in SQL?
我尝试使用 varchar
声明为变量的字符串:
DECLARE @fsPath AS varchar = 'D:\win-develop\FSCat';
但在使用中:
ALTER DATABASE MyDb
ADD FILE
( NAME = 'FSCatalog', FILENAME = @fsPath
)
TO FILEGROUP MyDbFSGroup;
GO
我收到错误:
Incorrect syntax near '@fsPath'.
我做错了什么?
您没有指定长度,在此上下文中默认长度为“1”。所以:
DECLARE @fsPath AS varchar(max) = 'D:\win-develop\FSCat';
然而,这只是一个问题。不允许在 alter database
中使用变量。 SQL 服务器文档在这个主题上相当复杂,但您始终可以使用动态 SQL:
declare @sql nvarchar(max) = '
ALTER DATABASE MyDb
ADD FILE( NAME = ''FSCatalog'', FILENAME = ''@fsPath'')
TO FILEGROUP MyDbFSGroup';
select @sql = replace(@sql, '@fspath', @fsPath);
exec sp_executesql @sql;
刚刚 varchar
在 table.
中添加了值:D
varchar(50)
在 table.
中添加了值:D:\win-develop\FSCat
Specify the length !
您不能直接在 ALTER 数据库中使用变量。使用动态 SQL.
DECLARE @sql nvarchar(4000)
SET @sql = 'ALTER DATABASE MyDb ADD FILE ( NAME = ''FSCatalog'', FILENAME = ' + @fsPath + ') TO FILEGROUP MyDbFSGroup; GO'
EXEC sp_executesql @sql
您需要使用动态 SQL 才能实现此目的。
我们不能将变量传递给 ALTER
查看 ALTER DATABASE / ADD FILE / VARIABLE FILENAME?
我尝试使用 varchar
声明为变量的字符串:
DECLARE @fsPath AS varchar = 'D:\win-develop\FSCat';
但在使用中:
ALTER DATABASE MyDb
ADD FILE
( NAME = 'FSCatalog', FILENAME = @fsPath
)
TO FILEGROUP MyDbFSGroup;
GO
我收到错误:
Incorrect syntax near '@fsPath'.
我做错了什么?
您没有指定长度,在此上下文中默认长度为“1”。所以:
DECLARE @fsPath AS varchar(max) = 'D:\win-develop\FSCat';
然而,这只是一个问题。不允许在 alter database
中使用变量。 SQL 服务器文档在这个主题上相当复杂,但您始终可以使用动态 SQL:
declare @sql nvarchar(max) = '
ALTER DATABASE MyDb
ADD FILE( NAME = ''FSCatalog'', FILENAME = ''@fsPath'')
TO FILEGROUP MyDbFSGroup';
select @sql = replace(@sql, '@fspath', @fsPath);
exec sp_executesql @sql;
刚刚 varchar
在 table.
D
varchar(50)
在 table.
D:\win-develop\FSCat
Specify the length !
您不能直接在 ALTER 数据库中使用变量。使用动态 SQL.
DECLARE @sql nvarchar(4000)
SET @sql = 'ALTER DATABASE MyDb ADD FILE ( NAME = ''FSCatalog'', FILENAME = ' + @fsPath + ') TO FILEGROUP MyDbFSGroup; GO'
EXEC sp_executesql @sql
您需要使用动态 SQL 才能实现此目的。 我们不能将变量传递给 ALTER
查看 ALTER DATABASE / ADD FILE / VARIABLE FILENAME?