的模式我有以下幾點:刪除使用變量名
DECLARE @SchemaName NVARCHAR(MAX)
SET @SchemaName = 'MySchema'
DROP SCHEMA MySchema
我應該如何去使用變量?我試過DROP SCHEMA OBJECT_ID(@SchemaName)
也許DELETE FROM SYS.SCHEMAS WHERE NAME = @SchemaName
等於DROP
?
的模式我有以下幾點:刪除使用變量名
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