Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- a)
- DECLARE
- v_inf NUMBER(4);
- v_sup NUMBER(4);
- v_codprom NUMBER(4);
- v_nomprod varchAr2(60);
- v_codprodrel NUMBER(3);
- BEGIN
- select max(codproducto) into v_inf from promocion;
- select max(codproducto) into v_sup from producto;
- select max(codpromocion) into v_codprom from promocion;
- FOR I IN v_inf..v_sup LOOP
- SELECT DESCRIPCION, CODPRODUCTO_REL INTO v_nomprod, v_codprodrel
- FROM producto
- WHERE codproducto = I;
- INSERT INTO PROMOCION VALUES
- (
- v_codprom,v_nomprod,TO_DATE('01-04-2018'),TO_DATE('30-06-2018'),I,0.05,v_codprodrel
- );
- END LOOP;
- END;
- b)
- DECLARE
- v_inf NUMBER(4);
- v_sup NUMBER(4);
- v_codprom NUMBER(4);
- v_nomprod varchAr2(60);
- v_codprodrel NUMBER(3);
- BEGIN
- select max(codproducto) into v_inf from promocion;
- select max(codproducto) into v_sup from producto;
- select max(codpromocion) into v_codprom from promocion;
- FOR I IN v_inf..v_sup LOOP
- SELECT DESCRIPCION, CODPRODUCTO_REL INTO v_nomprod, v_codprodrel
- FROM producto
- WHERE codproducto = I;
- v_codprom:= v_codprom +1;
- INSERT INTO PROMOCION VALUES
- (
- v_codprom, v_nomprod,TO_DATE('01-04-2018'),TO_DATE('30-06-2018'),I,0.05,v_codprodrel
- );
- END LOOP;
- END;
- c)
- DECLARE
- v_inf NUMBER(4);
- v_sup NUMBER(4);
- v_codprom NUMBER(4);
- v_nomprod varchAr2(60);
- v_codprodrel NUMBER(3);
- BEGIN
- select max(codproducto) into v_inf from promocion;
- select max(codproducto) into v_sup from producto;
- select max(codpromocion) into v_codprom from promocion;
- v_inf:= v_inf +1;
- FOR I IN v_inf..v_sup LOOP
- SELECT DESCRIPCION, CODPRODUCTO_REL INTO v_nomprod, v_codprodrel
- FROM producto
- WHERE codproducto = I;
- v_codprom:= v_codprom +1;
- INSERT INTO PROMOCION VALUES
- (
- v_codprom, v_nomprod,TO_DATE('01-04-2018'),TO_DATE('30-06-2018'),I,0.05,v_codprodrel
- );
- END LOOP;
- END;
- d) respuesta a) y b)
- RESP c):
- Desarrollo a), no considera incrementar los codigos de promociones por cada iteración del ciclo for, provondo error de primary key.
- Desarrollo c), considera el ultimo código de producto de la tabla promoción, lo cual sería incorrecto, debido a que se estaría repitiendo el ultimo código de producto de la tabla promoción, y el requerimiento especifica que las nuevas promociones, sean aquellas que no habían estado en promoción.
- Pregunta N° 2:
- La sentencia CASE y la expresión CASE permiten:
- a) Evaluar solo una condición en una sentencia SQL o PL/SQL.
- b) Evaluar más de una condición una sentencia en PL/SQL.
- c) Evaluar solo una condición en una sentencia SQL.
- d) Evaluar solo una condición en una sentencia PL/SQL.
- RESP b):
- Tanto las expresiones CASE como sentencia CASE permiten evaluar mas de una condición tanto en SQL como PL/SQL. Las expresiones CASE es válida en bloque PL/SQL
- Pregunta N° 3:
- La estructura de control PL/SQL IF, permite realizar acciones de forma selectiva considerando su estructura, cual de las siguientes alternativas cumple la sintaxis al momento de ser aplicado en un bloque PL/SQL.
- a) IF ELSE END;
- b) IF THEN END IF;
- c) IF THEN ELSEIF ELSE END IF;
- d) IF THEN ELSIF END IF;
- e) IF THEN ELSIF THEN ELSE END IF;
- RESP e):
- La estructura de control IF, considera la siguiente sintaxis para su aplicación, los símbolos de corchetes, indican opcionalidad en su aplicación.
- IF condición THEN
- Sentencia;
- [ELSIF condición THEN
- Sentencia;]
- [ELSE
- Sentencia;]
- END IF;
- Pregunta N° 4:
- Con la implementación de un nuevo Sistema ERP, se requiere revisar la información de facturas emitidas, que permita analizar información relacionada con pagos de IVA mensuales, requerimiento del jefe de Contabilidad, el cual requiere el contar con un reporte para análisis respectivo.
- Dado lo anterior, se requiere generar dicha información, a través de un Bloque PL/SQL, utilizando ciclo iterativo LOOP END LOOP, que muestre los siguientes resultados parciales en la tabla RESUMEN_VENTA_MES, desde donde se obtendrá la información para el reporte que requiere el jefe de contabilidad
- a)
- DECLARE
- v_inf FACTURA.NUMFACTURA%TYPE;
- v_sup FACTURA.NUMFACTURA%TYPE;
- V_NUM FACTURA.NUMFACTURA%TYPE;
- V_FECHA FACTURA.FECHA%TYPE;
- V_NOMCLI CLIENTE.NOMBRE%TYPE;
- V_NETO FACTURA.NETO%TYPE;
- V_IVA FACTURA.IVA%TYPE;
- V_TOTAL FACTURA.TOTAL%TYPE;
- BEGIN
- select min(numFACTURA) into v_inf from FACTURA;
- select max(numFACTURA) into v_sup from FACTURA;
- LOOP
- SELECT NUMFACTURA, FECHA, CL.NOMBRE, NETO, IVA, TOTAL
- INTO V_NUM, V_FECHA,V_NOMCLI,V_NETO, V_IVA,V_TOTAL
- FROM FACTURA FA JOIN CLIENTE CL ON (FA.RUTCLIENTE=CL.RUTCLIENTE)
- WHERE NUMFACTURA = v_inf;
- INSERT INTO DETALLE_VENTA_MES VALUES
- (
- 'FAC',V_NUM, V_FECHA,V_NOMCLI,V_NETO, V_IVA,V_TOTAL
- );
- EXIT WHEN v_inf > v_sup;
- END LOOP;
- END;
- b)
- DECLARE
- v_inf FACTURA.NUMFACTURA%TYPE;
- v_sup FACTURA.NUMFACTURA%TYPE;
- V_NUM FACTURA.NUMFACTURA%TYPE;
- V_FECHA FACTURA.FECHA%TYPE;
- V_NOMCLI CLIENTE.NOMBRE%TYPE;
- V_NETO FACTURA.NETO%TYPE;
- V_IVA FACTURA.IVA%TYPE;
- V_TOTAL FACTURA.TOTAL%TYPE;
- BEGIN
- select min(numFACTURA) into v_inf from FACTURA;
- select max(numFACTURA) into v_sup from FACTURA;
- LOOP
- SELECT NUMFACTURA, FECHA, CL.NOMBRE, NETO, IVA, TOTAL
- INTO V_NUM, V_FECHA,V_NOMCLI,V_NETO, V_IVA,V_TOTAL
- FROM FACTURA FA JOIN CLIENTE CL ON (FA.RUTCLIENTE=CL.RUTCLIENTE)
- WHERE NUMFACTURA = v_inf;
- INSERT INTO DETALLE_VENTA_MES VALUES
- (
- 'FAC',V_NUM, V_FECHA,V_NOMCLI,V_NETO, V_IVA,V_TOTAL
- );
- v_inf:= v_inf + 1;
- EXIT WHEN v_inf > v_sup;
- END LOOP;
- END;
- c)
- DECLARE
- v_inf FACTURA.NUMFACTURA%TYPE;
- v_sup FACTURA.NUMFACTURA%TYPE;
- V_NUM FACTURA.NUMFACTURA%TYPE;
- V_FECHA FACTURA.FECHA%TYPE;
- V_NOMCLI CLIENTE.NOMBRE%TYPE;
- V_NETO FACTURA.NETO%TYPE;
- V_IVA FACTURA.IVA%TYPE;
- V_TOTAL FACTURA.TOTAL%TYPE;
- BEGIN
- select min(numFACTURA) into v_inf from FACTURA;
- select max(numFACTURA) into v_sup from FACTURA;
- LOOP
- SELECT NUMFACTURA, FECHA, CL.NOMBRE, NETO, IVA, TOTAL
- INTO V_NUM, V_FECHA,V_NOMCLI,V_NETO, V_IVA,V_TOTAL
- FROM FACTURA FA JOIN CLIENTE CL ON (FA.RUTCLIENTE=CL.RUTCLIENTE)
- WHERE NUMFACTURA = v_inf;
- INSERT INTO DETALLE_VENTA_MES VALUES
- (
- 'FAC',V_NUM, V_FECHA,V_NOMCLI,V_NETO, V_IVA,V_TOTAL
- );
- v_inf:= v_inf + 1;
- END LOOP;
- END;
- d)
- DECLARE
- v_inf FACTURA.NUMFACTURA%TYPE;
- v_sup FACTURA.NUMFACTURA%TYPE;
- V_NUM FACTURA.NUMFACTURA%TYPE;
- V_FECHA FACTURA.FECHA%TYPE;
- V_NOMCLI CLIENTE.NOMBRE%TYPE;
- V_NETO FACTURA.NETO%TYPE;
- V_IVA FACTURA.IVA%TYPE;
- V_TOTAL FACTURA.TOTAL%TYPE;
- BEGIN
- select min(numFACTURA) into v_inf from FACTURA;
- select max(numFACTURA) into v_sup from FACTURA;
- LOOP
- SELECT NUMFACTURA, FECHA, CL.NOMBRE, NETO, IVA, TOTAL
- INTO V_NUM, V_FECHA,V_NOMCLI,V_NETO, V_IVA,V_TOTAL
- FROM FACTURA FA JOIN CLIENTE CL ON (FA.RUTCLIENTE=CL.RUTCLIENTE)
- WHERE NUMFACTURA = v_inf;
- INSERT INTO DETALLE_VENTA_MES VALUES
- (
- 'FAC',V_NUM, V_FECHA,V_NOMCLI,V_NETO, V_IVA,V_TOTAL
- );
- END LOOP;
- END;
- RESP b):
- Respuesta a) no incrementa contador, por tanto, no saldrá del loop
- Respuesta c) no considera condición de salida EXIT WHEN
- Respuesta d) no considera condición de salida EXIT WHEN y tampoco incremento de contador.
- Todo ciclo loop, debe considerar formato
- Pregunta N° 5:
- Al momento de evaluar una condición con una variable NULL el resultado es:
- a) SI aplica operador AND, la primera expresión entrega TRUE, la segunda expresión entrega NULL el resultado TRUE
- b) SI aplica operador AND, la primera expresión entrega TRUE, la segunda expresión entrega NULL el resultado FALSE
- c) SI aplica operador AND, la primera expresión entrega TRUE, la segunda expresión entrega NULL el resultado NULL
- RESP c):
- Toda expresión que es evaluada al compararse con NULL, su resultado será NULL, de acuerdo a siguiente tabla lógica
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement