不允许执行存储过程

时间:2013-10-24 12:16:58

标签: sql-server tsql

我想使用动态sql执行我的sp,其中iam在参数

中传递数据库名称

如果我使用这种方式,我必须使用floowing代码

use @dbName

go

exec(@Sql)

其中@dbName是针对数据库名称引用的,而@Sql引用了我想要执行的整个查询 我使用的是Sql server 2005 我的代码如下

set @cSQL=@dbName+'.dbo.sp_helptext '''+@cName+''''

现在我想执行这个存储过程,所以目标数据库是新数据库,下一行需要一个use @dbname Go后跟一个sql语句

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

我刚试过这个,它适用于没有USEGO的SQL Server 2000 ...

declare @dbname as varchar(100), @sql as varchar(100)
set @dbname = 'my-database'
set @sql = 'my-stored-procedure'

set @Sql = QUOTENAME(@dbName) + '.dbo.sp_helptext ''' + @Sql + ''''
exec(@Sql)