art*_*o r 36 sql sql-server stored-procedures sql-server-2005
我有3个插入存储过程,每个SP在2个不同的表中插入数据
Table 1 Table 2
idPerson idProduct
name productName
phoneNumber productdescription
FK-idProduct
Run Code Online (Sandbox Code Playgroud)
对于表2,表1 SP的SP
create procedure test1 create procedure test2
WITH WITH
EXECUTE as caller EXECUTE as caller
AS AS
declare declare
@idPerson int, @idProduct int,
@name varchar(20), @productName varchar(50),
@phone varchar(20) @productoDescription varchar(50)
SET nocount on; SET nocount on;
Begin Begin
insert into table1( insert into table2(
idPerson, idProduct,
name, productName,
phone) productDescription)
values( values(
@idPerson, @idProduct,
@name, @productName,
@phone) @productDescription)
end end
Run Code Online (Sandbox Code Playgroud)
我需要从存储过程测试1调用存储过程测试2并将FK-ID插入表1中
Mar*_*lec 31
简单地调用test2从test1这样的:
EXEC test2 @newId, @prod, @desc;
Run Code Online (Sandbox Code Playgroud)
一定要@id使用:
SELECT @newId = @@SCOPE_IDENTITY
Run Code Online (Sandbox Code Playgroud)
您可以向test2添加OUTPUT参数,并在INSERT之后使用以下命令将其设置为新的id:
SELECT @NewIdOutputParam = SCOPE_IDENTITY()
Run Code Online (Sandbox Code Playgroud)
然后在test1中,像这样检索它:
DECLARE @NewId INTEGER
EXECUTE test2 @NewId OUTPUT
-- Now use @NewId as needed
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
158653 次 |
| 最近记录: |