2012-09-17 55 views
0

我使用SQL Server 2008中我的存儲過程都通過動態數據庫名和存儲列值到一個變量動態數據庫名和存儲列值的變量

ALTER PROCEDURE [dbo].[proc_testproc](@mUserId int) 
AS 
declare @logCreate BIT; 
declare @dbname sysname; 
set @dbname = 'finaldb' 

exec('SELECT ua.LogCreate AS ' + @logCreate + ' from '+ @dbname 
    + 'dbo.User_Access as ua where ua.UserId=' + @mUserId + ') 

IF @logCreate = 1 
--- Below some insertion happens based on the select query output-- 

誰能幫助我如何傳遞動態數據庫名稱並將該值存儲到變量中?

+0

可能重複的[如何從動態SQL存儲過程返回值到實體框架?](http://stackoverflow.com/questions/3166952/how-to-return-values-from-a -dynamic-SQL存儲過程到所述實體框架) – Taryn

回答

1

您所需要的成分是

基本上,構建一個動態SQL語句使用sp_executesql運行,和可變傳遞到它。通過聲明爲OUTPUT參數的變量,它可以將結果帶出動態SQL語句。

ALTER PROCEDURE [dbo].[proc_testproc](@mUserId int) 
AS 
declare @logCreate BIT; 
declare @dbname sysname; 
set @dbname = 'finaldb' 

declare @sql nvarchar(max) 
set @sql = ' 
    SELECT @logCreate=ua.LogCreate 
    from '+ @dbname + '.dbo.User_Access as ua 
    where [email protected]' 
exec sp_executesql @sql, 
    N'@logCreate BIT output,@mUserId int', 
    @logCreate output, @mUserId 

IF @logCreate = 1 
相關問題