2013-10-24 181 views
1

我想用其中IAM在参数不是允许执行存储过程

传递数据库名称。如果我使用这种方式动态SQL执行我的SP我必须使用floowing代码

use @dbName 

go 

exec(@Sql) 

其中@DbName被下文称的datbase名和@sql reffers,我想使用SQL Server 2005 荫来执行整个查询,我的代码如下

set @[email protected]+'.dbo.sp_helptext '''[email protected]+'''' 

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

任何人都可以帮助我吗?

+0

你可以指定你所使用的数据库?你正在使用什么代码? –

+0

为什么不直接在动态sql中使用'use'命令部分? – David

+0

无法执行使用@variable名称,而不是MS SQL Server – Charleh

回答

1

我只是尝试这样做,它的工作原理SQL Server 2000上没有USEGO ...

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)