1

查看代碼中的評論。如何獲取調用存儲過程的數據庫名稱?

use master 
go 

create database db1 
create database db2 
go 

------------------------------- 
use db2 
go 

create procedure proc2 
as begin 
    -- how I can figure out that this proc2 is called 
    -- 1. from proc1 which is contained in the db1 (case N1) 
    -- 2. or from context of db1 (case N2) 
    select DB_NAME() 
end 
go 

------------------------------- 
use db1 
go 

create procedure proc1 
as begin 
    exec db2.dbo.proc2 
end 
go 

select DB_NAME(); 

-- case N1 
exec dbo.proc1; 

-- case N2 
exec db2.dbo.proc2; 


------------------------------- 
use master 
go 

drop database db1 
drop database db2 

輸出

db1 
db2 
db2 
+0

'@@ nestlevel'和'original_db_name()'可能會給你一些信息,但不是太多 –

回答

0

如果我沒有記錯,我不認爲這是可能的。

有一種解決方法,您可以在proc2中添加一個額外的輸入參數並將信息傳遞給它。

+0

不好 - 我只是想避免傳遞一個參數:) –

+0

對不起m8 ...這將是有趣的知道tho ...我會+1的問題。 –

+0

Tnx,我會等一下 –

相關問題