2013-10-24 237 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)