读书人

一个存储过程中遇到的有关问题

发布时间: 2013-04-20 19:43:01 作者: rapoo

求助一个存储过程中遇到的问题
编译能编译过去,但执行时老是提示错误
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)

你后面没语句当然不行呐

读书人网 >SQL Server

热点推荐