删除使用变量名
的模式我有以下几点:删除使用变量名
DECLARE @SchemaName NVARCHAR(MAX)
SET @SchemaName = 'MySchema'
DROP SCHEMA MySchema
我应该如何去使用变量?我试过DROP SCHEMA OBJECT_ID(@SchemaName)
也许DELETE FROM SYS.SCHEMAS WHERE NAME = @SchemaName
等于DROP
?
删除记录的尝试是这样的:
DECLARE @sql nvarchar(max), @SchemaName NVARCHAR(MAX)
SET @SchemaName = 'MySchema'
set @sql = 'DROP SCHEMA ' + quotename(@SchemaName)
---print @sql
exec sp_executesql(@sql)
尝试使用动态SQL
DECLARE @SchemaName NVARCHAR(MAX)
SET @SchemaName = 'test'
DECLARE @sql NVARCHAR(128)= ''
SET @sql = 'DROP SCHEMA ' + quotename(@SchemaName) + ''
--print @sql
EXEC (@sql)
此外,我不认为你可以从SYS.SCHEMAS
视图
我想你可能想' EXEC(@sql)'而不是'EXEC @ sql',同样,使用'QUOTENAME()'而不是手动连接括号是个好主意,因为'QUOTENAME()'会正确地转义字符。考虑下面的模式 - “CREATE SCHEMA”Stupid [] Name“;' - 使用quotename可以正确地转义给出:[Stupid []] Name],而只是连接括号会给[Stupid [] Name],导致一个语法错误。虽然我承认这是一个可恶的对象名称,但有时候人们需要迎合这一点。 – GarethD
@GarethD - 同意!!更新:) –
完美,因为我已经有一个@sql,我可以用它来添加这个。 (使用COALESCE) – grmbl