Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Validar si una query contiene valores

Estas en el tema de Validar si una query contiene valores en el foro de Oracle en Foros del Web. hola nuevamente amigos del foro: Estoy desarrollando un programa de control de stock .... hasta ahi todo bien pero deseo validar que cuando saque articulos ...
  #1 (permalink)  
Antiguo 11/12/2007, 11:47
 
Fecha de Ingreso: septiembre-2005
Mensajes: 41
Antigüedad: 19 años, 1 mes
Puntos: 0
Exclamación Validar si una query contiene valores

hola nuevamente amigos del foro:

Estoy desarrollando un programa de control de stock .... hasta ahi todo bien
pero deseo validar que cuando saque articulos de la tabla que los contiene pueda saber si existen articulos en la tabla o no.

ejemplo: en la tabla articulos tengo 100 lapices y deseo sacar 110 entonces
si hago esto con el codigo que he creado en la tabla articulos me quedara con
- 10 y eso no corresponde la idea es que si yo ingreso 110 el programa me diga que no se puede realizar la operacion por que solo existen 100 en stock.


bueno espero puedan ayudarme les dejo la inquietud .....muchas gracias por la paciencia
  #2 (permalink)  
Antiguo 11/12/2007, 13:21
Avatar de Drako_18  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 505
Antigüedad: 19 años, 6 meses
Puntos: 16
Re: Validar si una query contiene valores

Hola amigo;

Y porque no lo miras antes de acer el update?

(osea haz un select del producto en cuestion y que te devuelva la cantidad y la comparar con la que quieres sacar... )

Lo estas haciendo con pl/SQL? o con algun otro lenguaje como .net o algo así?


si no te lo solucionó, avisame, que si es en pl/sq´l, php ó VB.NET te podre hechar una manita...
__________________
Rubén Espada
Desarrollador full stack .Net (Angular + JS + .Net Core)
  #3 (permalink)  
Antiguo 11/12/2007, 13:34
 
Fecha de Ingreso: septiembre-2005
Mensajes: 41
Antigüedad: 19 años, 1 mes
Puntos: 0
Re: Validar si una query contiene valores

claro..estoy desarrollando en pl/sql......podiras escribir algun procedimiento o rutina que me pueda servir??
  #4 (permalink)  
Antiguo 11/12/2007, 13:54
Avatar de Drako_18  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 505
Antigüedad: 19 años, 6 meses
Puntos: 16
Re: Validar si una query contiene valores

pasame la tabla (aun que sea vacia) para hacer pruebas y ya te lo paso funcionando ;)
__________________
Rubén Espada
Desarrollador full stack .Net (Angular + JS + .Net Core)
  #5 (permalink)  
Antiguo 11/12/2007, 14:04
Avatar de Drako_18  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 505
Antigüedad: 19 años, 6 meses
Puntos: 16
Re: Validar si una query contiene valores

Hola he creado una funcion, solo le tienes que pasar la cantidad y el id del producto
y te devolvera un booleano para comprobarlo en un if.



CREATE OR REPLACE FUNCTION VALIDARCANTIDAD(P_CANTIDAD NUMBER, P_ID_ARTICULO NUMBER) RETURN BOOLEAN
AS
V_VALIDO BOOLEAN:=TRUE;
V_CAN_ACTUAL NUMBER(5):=0;
BEGIN
SELECT CANTIDAD INTO V_CAN_ACTUAL
FROM ARTICULOS
WHERE ID = P_ID_ARTICULO;

IF V_CAN_ACTUAL < P_CANTIDAD THEN
V_VALIDO:=FALSE;
END IF

RETURN V_VALIDO
END;



si necesitas algo más puedes contactar conmigo al email: [email protected]
__________________
Rubén Espada
Desarrollador full stack .Net (Angular + JS + .Net Core)
  #6 (permalink)  
Antiguo 11/12/2007, 14:04
 
Fecha de Ingreso: septiembre-2005
Mensajes: 41
Antigüedad: 19 años, 1 mes
Puntos: 0
Re: Validar si una query contiene valores

Cita:
Iniciado por Drako_18 Ver Mensaje
pasame la tabla (aun que sea vacia) para hacer pruebas y ya te lo paso funcionando ;)

esta es la tabla donde guardo todos los articulos como una bodega central

CREATE TABLE ARTICULOS_UNIDAD
(
ID_ARTICULOS_UNIDAD NUMBER NOT NULL,
ID_ESTADO_ARTICULO NUMBER,
NO_CIA VARCHAR2(3 BYTE),
NO_ENTIDAD VARCHAR2(3 BYTE),
CC_1 VARCHAR2(3 BYTE),
CC_2 VARCHAR2(3 BYTE),
CC_3 VARCHAR2(3 BYTE),
ID_UNIDAD_C_E VARCHAR2(2 BYTE),
ID_PROVEEDORES VARCHAR2(9 BYTE),
ID_PRESENTACION VARCHAR2(2 BYTE),
FECHA_COMPRA DATE,
STOCK_MINIMO NUMBER,
STOCK_MAXIMO NUMBER,
STOCK_ACTUAL NUMBER,
PRECIO NUMBER,
PRECIO_REPOSICION NUMBER,
FECHA_ALTA DATE,
DONACION NUMBER,
NO_ARTI VARCHAR2(9 BYTE),
CATEGORIA VARCHAR2(3 BYTE),
CLASE VARCHAR2(3 BYTE)
)

y esta es donde almaceno los articulos por departamentos o unidades

ID_MOVIMIENTOS_MES NUMBER NOT NULL,
FECHA DATE NOT NULL,
CANTIDAD NUMBER,
TOTAL NUMBER NOT NULL,
TIPO_ENTREGA VARCHAR2(2 BYTE) NOT NULL,
ID_ARTICULOS_UNIDAD NUMBER,
ID_TIPO_MOV NUMBER,
N_FACTURA VARCHAR2(20 BYTE),
ORDEN_COMPRA VARCHAR2(20 BYTE)
)

espero te sirva y si quieres te envio el codigo que he creado para ver si es el adecuado muchas gracias!
  #7 (permalink)  
Antiguo 11/12/2007, 14:17
Avatar de Drako_18  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 505
Antigüedad: 19 años, 6 meses
Puntos: 16
Re: Validar si una query contiene valores

Ya te he personalizado la funcion, ya directamente lo tienes que ejecutar en tu server y creas un if asi...

if VALIDARCANTIDAD(iCantidadProducto, iIdProducto) then
--Codigo que actualice las unidades en la tabla correspondiente...
end if;




CREATEORREPLACEFUNCTION VALIDARCANTIDAD(P_CANTIDAD NUMBER, P_ID_ARTICULO NUMBER)RETURNBOOLEAN
AS
V_VALIDO BOOLEAN:=TRUE;
V_CAN_ACTUAL NUMBER(5):=0;
BEGIN
SELECT ID_UNIDAD_C_E INTO V_CAN_ACTUAL
FROM ARTICULOS_UNIDAD
WHERE ID_ARTICULOS_UNIDAD = P_ID_ARTICULO;


IF V_CAN_ACTUAL < P_CANTIDAD THEN
V_VALIDO:=FALSE;
END IF;

RETURN V_VALIDO;
END;




__________________
Rubén Espada
Desarrollador full stack .Net (Angular + JS + .Net Core)
  #8 (permalink)  
Antiguo 14/12/2007, 04:38
Avatar de Osirapis  
Fecha de Ingreso: abril-2006
Ubicación: Granada - Sevilla. (la Tierra)
Mensajes: 89
Antigüedad: 18 años, 7 meses
Puntos: 0
Re: Validar si una query contiene valores

Para este caso particular, y dado que aun estás en desarrollo, ¿por qué no le añades una CONSTRAINT a la tabla para que STOCK_ACTUAL > 0?

Con esto te ahorras la función PL/SQL y tu aplicación rendirá mucho más por:

- Te ahorras la llamada al nuevo PL/SQL.
- Si violas la constraint (vendes más de lo que tienes) puedes gestionar el error en tu EXCEPTION.
- Evitas una lectura de la tabla, con lo que eso conlleva (cálculo de plan de ejecución nuevo, parsing del SQL, lecturas de bufferes o peor aun: de disco).
- Pasas la lógica del negocio directamente a la BBDD.

Pero esto no es más que un punto de vista.

Un saludo.
__________________
Solo hay 10 tipos de personas: los que saben binario y los que no. ; )P
  #9 (permalink)  
Antiguo 14/12/2007, 19:45
Avatar de kikolice  
Fecha de Ingreso: marzo-2004
Mensajes: 1.510
Antigüedad: 20 años, 8 meses
Puntos: 7
Re: Validar si una query contiene valores

si estoy de acuerdo en dejarle la logica a la base de datos pero no a nivel tabla, yo lo que haria si lo quisiera validar desde la base seria un trigguer
__________________
Blogzote.com :-) Mi blog
  #10 (permalink)  
Antiguo 15/12/2007, 11:39
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 17 años
Puntos: 85
Re: Validar si una query contiene valores

Hola,

El unico problema que veo tanto en las constraints como en los triggers para la validacion de datos, es que se pueden deshabilitar, y asi se pierde la funcionalidad o regla de negocio.

No se si es un error comun o soy yo un poco descuidado, pero me paso una vez, despues de una tarea de reorganizacion de datos, olvidarme de habilitar los triggers en una base de datos, y gracias a eso se generaron algunas incosistencias en los datos.

Saludos
  #11 (permalink)  
Antiguo 16/12/2007, 11:12
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 17 años, 5 meses
Puntos: 43
Re: Validar si una query contiene valores

Matanga.
Lo que comentas, ni es un error muy comun ni tu eres descuidado. Esas cosas suelen pasar.
Lo mejor para evitar eso, es al tiempo que preparas los DISABLES, prepara los ENABLE, me explico.
Si ahy que preparar scripts para inserción, actualizacion o borrado masivo y hya que deshabilitar triggers o fk's, yo lo que hago es al tiempo que pongo el DISABLE a un trigger o FK, en la siguiente linea pongo el ENABLE, dejo espacios y pongo el siguiente DISABLE / ENABLE, una vez que tengo los DISABLES en la parte de arriba y los ENABLES en la parte de abajo, dejo unas cuantas lineas entre los dos y pongo el update, insert ó delete.

Así me aseguro que todo lo que deshabilito, se queda habilitado de nuevo.

En el caso de las FK's, si estás seguro que que los datos manipulados son coherentes, en el ENABLE de las FK's puedes dejar la coletilla de " NO VALIDATE ", así te tardará menos.....

Bye
  #12 (permalink)  
Antiguo 16/12/2007, 15:03
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 17 años
Puntos: 85
Re: Validar si una query contiene valores

Hola,

Gracias por la idea jc3000, lamentablemente a mi me toco aprender esa leccion de mala manera :)

Supongo que todas las experiencias suman, la malas y las buenas.

Saludos
  #13 (permalink)  
Antiguo 17/12/2007, 01:58
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 17 años, 5 meses
Puntos: 43
Re: Validar si una query contiene valores

No digas lamentablemente.

Esas cosas vienen muy bién para aprender, siempre y cuando aprendas de la primera cagada y no la cagues una segunda vez, por lo menos por lo mismo.

Te lo digo por propia experiencia.

Un saludo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 17:03.