0

私は2つのテーブルを持っています

Employee---->Id(identity),FN,LN,Address

EmpContact--->Id(identity),Empid(Above table identity value),ContactType,ContactNumber

単一のストアド プロシージャに 2 つのテーブル挿入ステートメントを記述する方法。2 番目のテーブル「EmpContact」には、最初のテーブル「Employee」への挿入から得られた ID ID が必要です。

4

5 に答える 5

0

必要なのはSCOPE_IDENTITY()関数で、スコープ内の最後のIDを返します

insert into Employee(FN,LN, Adress)
values(@var1, @var2, @var3)

declare @EmpID int 
set @EmpID = SCOPE_IDENTITY()

insert into EmpContact(Empid, ContactType, contactNumber)
values(@EmpID, @var4, @var5)
于 2013-01-23T11:49:30.517 に答える
0

うーん...答えは本当に簡単です。エラー処理などを使用してプロシージャを作成するだけです。

create procedure dbo.myProc
@param

insert into dbo.Employee(FN,LN,Address)
select @value1, @value2, @value3

insert into dbo.EmpContact(Empid,ContactType,ContactNumber)
select ID,@value4, @value5
from dbo.Employee

go
于 2013-01-23T11:50:23.777 に答える
0

元の挿入物を使用できますが、使用できる最初のテーブルへの挿入からの ID ID はSCOPE_IDENTITY()、現在のセッションおよび現在のスコープ内の任意のテーブルに対して生成された最後の ID 値を返します。

于 2016-03-16T22:39:48.013 に答える
0

不明なフィールドがパラメーターとして入ってくると仮定します。

ストアドプロシージャ内...

DECLARE @EmployeeID BIGINT --Or whatever datatype you are using

INSERT INTO Employee
    (FN, LN, Address)
VALUES
    (@FN, @LN, @Address)

SET @EmployeeID = SCOPE_IDENTITY()  --This is probably the line you are looking for

INSERT INTO EmpContact
    (Empid, ContractType, ContractNumber)
VALUES
    (@EmployeeID, @ContractType, @ContractNumber)
于 2013-01-23T11:51:09.240 に答える
0
create proc yourproc
(
   -- parameter definitions here
)
as
begin
        insert into Employee
        (FN,LN,Address) 
        values 
        (@FN,@LN,@Address)

declare @EmployeeID int 
set @EmployeeID = SCOPE_IDENTITY()

        insert into EmpContact
        (Empid, ContactType, ContactNumber) 
        values 
        (@EmployeeID, @ContactType, @ContactNumber) 
end

SCOPE_IDENTITY と @@IDENTITY は、現在のセッションの任意のテーブルで生成された最後の ID 値を返します。ただし、SCOPE_IDENTITY は現在のスコープ内にのみ挿入された値を返します。@@IDENTITY は特定のスコープに限定されません。

SCOPE_IDENTITY (Transact-SQL) - MSDN

于 2013-01-23T11:51:31.580 に答える