
Mi tabla se llama BAL, y tiene solo 4 campos, el ID, CODE, TYPE y la FECHA (esta se pone de manera automatica cada vez q ingresa un dato a mi tabla con un getdate), y el store procedure se llama spa_bal_dato
| |||
![]() ![]() Mi tabla se llama BAL, y tiene solo 4 campos, el ID, CODE, TYPE y la FECHA (esta se pone de manera automatica cada vez q ingresa un dato a mi tabla con un getdate), y el store procedure se llama spa_bal_dato |
| |||
Re: un trigger que ejecute un store procedure?? ![]()
Código:
Y así lo ejecuto:create procedure dbo.spa_bal_dato @CODEOUT CHAR(10) OUTPUT, @TYPEOUT CHAR(10) OUTPUT as SELECT TOP 1 @CODEOUT = CODE ,@TYPEOUT = TYPE FROM dbo.BALANCEADORAS WHERE (CODE > '0') ORDER BY ID DESC GO
Código:
-- Ejecución del stored procedure Declare @CODEOUT_L VARCHAR(20), @TYPEOUT_L VARCHAR(20) Execute dbo.spa_bdr_dato @CODEOUT_L OUTPUT, @TYPEOUT_L OUTPUT Como habras observado, el SP me devuelve el ultimo dato que ingresó en mi tabla y lo guarda en unas variables, las cuales envio a otro proceso, pero necesito que cada vez que ingrese un dato nuevo en mi tabla se ejecute el store procedure, asi podre ver siempre y de manera automática el último dato que ingresa en mi tabla...es por ello que necesito generar el trigger, la cuestion es que no sé como generar un trigger que haga que se ejecute mi SP... ![]() |
| ||||
Re: un trigger que ejecute un store procedure?? Suponiendo que el campo ID es identity (autonumérico) entonces creo que vas por el camino empedrado. Tienes funciones para regresar el último valor del identity. Prueba con cosas como: INSERT INTO tabla a, b VALUES ('a', 'b') SELECT SCOPE_IDENTITY() --el valor que buscas
__________________ Friedrich Nietzsche |
| |||
Re: un trigger que ejecute un store procedure?? Hola Mithrandir!!!...bueno en realidad la idea es regresar el último valor del campo de CODE y TYPE que fueron ingresados, te había comentado que tengo 4 campos, ID(autonmérico), CODE, TYPE y FECHA(getdate), por lo tanto lo mas conveniente sería dejar que en el SP filtre por la fecha:
Código:
Aunque mi duda continua, como hago que mi SP se ejecute (de forma automática) cada vez que ingrese una nueva fila de datos (CODE y type)??...se ingresará un dato de codigo y tipo (fila) entonces requiero que se ejecute mi SP cada vez que esto suceda...??? create procedure dbo.spa_bal_dato @CODEOUT CHAR(10) OUTPUT, @TYPEOUT CHAR(10) OUTPUT as SELECT TOP 1 @CODEOUT = CODE ,@TYPEOUT = TYPE FROM dbo.BALANCEADORAS WHERE (CODE > '0') ORDER BY FECHA DESC GO ![]() ![]() |
| ||||
Re: un trigger que ejecute un store procedure?? Se me ocurre algo como: SELECT * INTO #temp FROM Inserted DECLARE @code Char(10), @Type Char(10) WHILE EXISTS(SELECT * FROM #temp) BEGIN SELECT TOP 1 @code = code, @type = type FROM #temp EXEC dbo.spa_bal_dato @code, @type DELETE #temp WHERE code = @code AND type = @type END DROP TABLE #temp Solo ajusta la parte del delete para asegurar que filtras sobre el campo llave. PD. Código al vuelo, puede tener errores.
__________________ Friedrich Nietzsche |
| |||
![]() Realicé el select que me sugeriste, cambié algunas cosas y me quedó de la siguiente forma:
Código:
Aunque no estoy muy segura de lo que hace, lo hice en el analyzer query y al ejecutarlo me borró mi SP...SELECT * INTO BAL FROM BAL DECLARE @CODE VARCHAR(20), @TYPE VARCHAR(20) WHILE EXISTS(SELECT * FROM #temp) BEGIN SELECT TOP 1 @code = code, @type = type FROM #temp EXEC dbo.spa_bal_dato @code, @type DELETE #temp WHERE code = @code AND type = @type END ![]() Creo que mas bien lo que necesito es crear un trigger que ejecute mi SP en el momento en que se haya insertado una nueva fila de datos (que lleguen datos nuevos a los 4 campos de la tabla), busqué un poco y relicé lo siguiente:
Código:
pero no sé si este bien, además como saber si un trigger funciona?...por otro lado creé el trigger, pero en donde se almacena?...y si no es lo que necesito, como borrarlo?...y asi como en el SP hay una sintaxis que al crearlo si ya existe borra el existente, para realizar el trigger tambien?...CREATE TRIGGER updBalData ON BALANCEADORAS FOR INSERT AS Declare @CODEOUT_L VARCHAR(20), @TYPEOUT_L VARCHAR(20) Execute dbo.spa_bdr_dato @CODEOUT_L OUTPUT, @TYPEOUT_L OUTPUT Print ' Valor de @CODEOUT_L ' + @CODEOUT_L Print ' Valor de @TYPEOUT_L ' + @TYPEOUT_L GO ![]() ![]() ![]() |
| ||||
Re: un trigger que ejecute un store procedure?? Tu primer código tiene errores, porque mezclas la tabla BAL con la #temp que yo utilizé (Usar # indica que es una tabla temporal, es mejor idea). SELECT * INTO BAL FROM BAL Esta sentencia no tiene sentido, marcará que la tabla ya existe. Por otro lado, no veo la referencia a Inserted, que es lo que hace trigger a un trigger. En tu segundo código veo que no haces nada con las variables, simplemente las declaras y las mandas al SP. Espero eso te ayude a aclarar tus dudas.
__________________ Friedrich Nietzsche |