求助一个存储过程中遇到的问题
编译能编译过去,但执行时老是提示错误
DECLARE @db1 nvarchar(50)
DECLARE @sql nvarchar(200)
SET @sql='IF NOT EXISTS (SELECT name FROM sys.databases WHERE name= '+ QUOTENAME(@db1,'''') + ')'
exec(@sql)
执行时,提示在)附近有错误
换成
DECLARE @db1 nvarchar(50)
DECLARE @sql nvarchar(200)
SET @sql='IF NOT EXISTS (SELECT name FROM sys.databases WHERE name=QUOTENAME(@db1,''''))'
exec sp_executesql @sql,N'@db1 NVARCHAR(50)',@db1
也是一样的错误,请教为什么,如果不使用@sql变量,执行就不会报错的。
------解决方案--------------------DECLARE @db1 nvarchar(50)
DECLARE @sql nvarchar(200)
set @db1='pub'
SET @sql='IF NOT EXISTS (SELECT name FROM sys.databases WHERE name= '+ QUOTENAME(@db1,'''') + ')
go
begin
select '''+@db1+'''
end'
exec(@sql)
你后面没语句当然不行呐