¿Si haces un select con dos campos, de alguna forma se puede pasar esos campos a variables?

Otra vez!
Tengo una duda:
Si haces un select con dos campos, de alguna forma se puede pasar esos campos a variables (sin tener que hacer la consulta dos veces, es que utiliza un inner join...) ¿A las que yo pueda operar luego con ellas?

1 respuesta

Respuesta
1
Coloca la sentencia que utilizas porque todavía no entiendo lo que quieres, los triggers verifican siempre que se inserta, borra o actualiza un registro, si quieres validar la existencia de la fecha sería un trigger de update y tienes que indicar algo como:
if not isnull(fechaPedid)
Además de la otra pregunta que te hice tengo otra duda distinta:
Si tengo una tabla con los campos:
fechaPedido
fechaAtendido
fechaPagado
Quiero que estos datos se inserte en este orden, es decir, quiero que cuando se inserte, por ejemplo, fechaAtendido, ya se haya insertado fechaPedido antes
¿Cómo lo hago? Estuve pensando en un trigger, pero si pongo que fechaPedido<>NULL (condición a mirar cuando inserto fechaAtendido) siempre me dirá que es cierto (porque NULL<>NULL), entonces ¿cómo mirarlo?
Muchas gracias por contestar.
Saludos
Si quieres los tres valores finales mencionados, tienes que realizar tres sentencias de extracción, si es que no sale en una sola, pero no veo el caso de tener un cursor. Verifica bien lo que extraes y aplica simples selects.
Hola!
Lo que hago es un trigger que me mira si en el almacen hay un mínimo y sino se realiza automáticamente, se inserta una compra, el trigger es:
CREATE TRIGGER comprobarAlmacen ON dbo.TProductos
FOR UPDATE
AS
BEGIN
/** Si se ha modificado la cantidad del producto en el almacén **/
IF (SELECT count(*) FROM inserted I
INNER JOIN deleted D
ON I.id_producto=D.id_producto
WHERE I.cantAlmacen<>D.cantAlmacen) > 0
BEGIN
/**Creo un cursor para obtener: la cantidad mínima, la cantidad del almacén
y el producto que se ha modificado**/
DECLARE @cantidadMin as int
DECLARE @cantidadAlmacen as int
DECLARE @idProducto as int
DECLARE cursorProductos CURSOR FOR
SELECT I.id_producto, P.cantMin, P.cantAlmacen
FROM inserted I
INNER JOIN TProductos P
ON I.id_producto=P.id_producto
OPEN cursorProductos
FETCH NEXT FROM cursorProductos
INTO @idProducto, @cantidadMin, @cantidadAlmacen
DECLARE @idProveedor as int
SET @idProveedor=(SELECT id_proveedor
FROM TProv_Prod PP
INNER JOIN inserted I
ON (I.id_producto=PP.id_producto) AND (PP.preferencia=1))
IF @cantidadAlmacen < @cantidadMin
BEGIN
INSERT INTO TCompras (id_proveedor,id_producto,cantCompra) values (@idProveedor,@idProducto,@cantidadMin)
END
END
END
Pero he leído que los cursores son lentos (aunque como solo recupero un registro...), pero lo utilizo para solo hacer un inner join y no 3 para recuperar las variables @cantidadMin, @cantidadAlmacen, @idProducto.
¿Compensa? ¿Qué me dices?
Yo lo que quiero hacer es hacer una consulta donde recupero dos campos, pero quiero luego ponerlos en una variable para poder operar con ellos.
Oye, y que es lo que me comentabas que querías llamar desde el trigger ¿?
Saludos.
Es que se que se puede hacer con un cursor. ¿Hay alguna forma+de hacerlo?
Pero yo lo utilizo en un trigger y solo se va a recuperar (siempre) una fila, entonces: que sería mejor ¿dos consultas inner join o un cursor? Cada vez que ejecute el trigger
No te entendí, me puedes explicar un poco más que es lo que quieres hacer.
Ya que puedes implementar un stored procedure que realice lo que comentas de selección de información y llamarlo desde el trigger.
Verás con una consulta (que lleva un inner join) puedo recuperar todos los campos, y mi pregunta era esa:Si hago un select donde recupero 3 campos ¿cómo pasarlos a variables para poder utilizarlos luego? (Era por eso que utilizaba un cursor porque no se de otra forma)
Y también te preguntaba: que en cuanto al rendimiento, que compensaba más: ¿3 inner join (que en realidad será la misma para recuperar distintos campos de la misma sentencia sql, porque como te dije antes no se hacer de 1 sola sentencia pasar los campos recuperados de la sentencia a variables) o un cursor?
Al final lo hice como tu me dijiste, con consultas sin utilizar cursores.
Me ha sido de gran ayuda. Muchas gracias:)
Hasta la próxima.
Saludos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas