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
4

2 に答える 2

0

私の記憶が正しければ、ありえないと思います。

回避策があります。proc2 に追加の入力パラメーターを追加して、それに情報を渡すことができます。

于 2013-08-22T11:40:49.333 に答える