ver procedimientos procedimiento parametros otro los llamar ejecutar desde dentro como anidados almacenados almacenado abrir sql sql-server sql-server-2005 stored-procedures

parametros - procedimientos almacenados anidados sql server



Llamar al procedimiento almacenado desde otro procedimiento almacenado Servidor SQL (3)

En primer lugar, si el table2 de table2 es una identidad, no puede insertarlo explícitamente hasta que configure IDENTITY_INSERT en esa tabla

SET IDENTITY_INSERT table2 ON;

antes del inserto.

Por lo tanto, uno de los dos modificará su segundo almacenado y lo llamará con solo los parámetros productName y productDescription y luego obtendrá la nueva ID.

EXEC test2 ''productName'', ''productDescription'' SET @newID = SCOPE_IDENTIY()

o ya tiene la ID del producto y no necesita llamar a SCOPE_IDENTITY() y puede hacer la inserción en la table1 con esa ID

Tengo 3 inserte procedimientos almacenados cada SP inserta datos en 2 tablas diferentes

Table 1 Table 2 idPerson idProduct name productName phoneNumber productdescription FK-idProduct

SP para la tabla 1 SP para la tabla 2

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

Necesito llamar al procedimiento almacenado prueba 2 desde el procedimiento almacenado prueba 1 e insertar el FK-ID en la tabla 1


Puede agregar un parámetro OUTPUT a test2 y configurarlo en la nueva identificación directamente después de INSERT usando:

SELECT @NewIdOutputParam = SCOPE_IDENTITY()

Luego, en la prueba 1, recupérelo así:

DECLARE @NewId INTEGER EXECUTE test2 @NewId OUTPUT -- Now use @NewId as needed


Simplemente llame a test2 desde test1 como:

EXEC test2 @newId, @prod, @desc;

Asegúrese de obtener @id usando:

SELECT @newId = @@SCOPE_IDENTITY