Matias Rodriguez

Miembro Activo
Se incorporó
4 Abril 2021
Mensajes
9
Quisiera saber si alguien es mateo para pl/sql que me pueda ayudar a aprender porfavor, ya que tengo que hacer unos ejercicios y no puedo:c si es que me puede hablar y así verlo, se lo agradecería mucho😭
 

javiernico

cmos burner
Miembro del Equipo
MOD
Se incorporó
1 Junio 2006
Mensajes
4.264
Quisiera saber si alguien es mateo para pl/sql que me pueda ayudar a aprender porfavor, ya que tengo que hacer unos ejercicios y no puedo:c si es que me puede hablar y así verlo, se lo agradecería mucho😭
La idea de un foro es hacer la consulta publica, asi mas de una persona puede responder y por otro lado queda en el historico por si alguien tiene la misma duda mas adelante.

Es mucho mejor si ordenas tus dudas y las planteas por acá
 
Upvote 0

Matias Rodriguez

Miembro Activo
Se incorporó
4 Abril 2021
Mensajes
9
La idea de un foro es hacer la consulta publica, asi mas de una persona puede responder y por otro lado queda en el historico por si alguien tiene la misma duda mas adelante.

Es mucho mejor si ordenas tus dudas y las planteas por acá
okey es que no sabia como plantearlo, mi duda es que me piden hacer una consulta la cual inserte los valores que piden en otra tabla, el tema es que tengo que sacar unos valores pero a través de variables y, que todo esto quede en un bloque
 
Upvote 0

Zuljin

Fundador
Miembro del Equipo
Fundador
ADMIN
Se incorporó
15 Enero 2004
Mensajes
11.872
Ya, voy a suponer que vamos a tomar valores de una tabla e insertarla en otra tabla, todo dentro de un procedimiento almacenado.

Tabla origen: falabella_culia :cussing . Campos: id, valor
tabla destino: mercadolibre_aguante . Campos: id, valor, fecha de inserción (esta la voy a rellenar con la fecha y hora del sistema)

Código:
DECLARE
    v_id integer;
    v_valor integer;

   CURSOR cur_extraer 
   IS        
    SELECT id, valor        
    FROM falabella_culia;    
   
BEGIN
   
FOR extrae_datos IN cur_extraer 
   LOOP        
    v_id := extrae_datos.id;        
    v_valor := extrae_datos.valor;        

    insert into mercadolibre_aguante ( id, valor, fechainsercion) values ( v_id, v_valor, sysdate); 
    
   END LOOP;        

END;
 
Upvote 0

Matias Rodriguez

Miembro Activo
Se incorporó
4 Abril 2021
Mensajes
9
Son dos ejercicios de una guía pero pudieses hacer de profe online seria bkn porque tengo un amigo que también necesita ayuda
 
Upvote 0

Zuljin

Fundador
Miembro del Equipo
Fundador
ADMIN
Se incorporó
15 Enero 2004
Mensajes
11.872
Son dos ejercicios de una guía pero pudieses hacer de profe online seria bkn porque tengo un amigo que también necesita ayuda

Ahí lo arreglé, tuve un error de sintaxis.

Pon el ejercicio aunque sea escaneado y ahí veo si los puedo ayudar.
 
Upvote 0

Matias Rodriguez

Miembro Activo
Se incorporó
4 Abril 2021
Mensajes
9
VARIABLE b_patente VARCHAR2(6)
EXEC :b_patente:=&patente;
DECLARE
v_mes varchar2(10);
v_nro_patente arriendo_camion.nro_pantente%type;
v_fecha_ini_arriendo arriendo_camion.fecha_ini_arriendo%TYPE;
v_dias_solicitado NUMBER(30);
v_fecha_devolucion arriendo_camion.fecha_devolucion%TYPE;
v_dias_atraso NUMBER(30);
v_valor_multa NUMBER(10);
BEGIN

SELECT
to_char(sysdate,'YYYYMM') as "ANNO_PROCESO_SOLICITADO",
NRO_PATENTE AS "NRO_PATENTE",
FECHA_INI_ARRIENDO AS "FECHA_INI_ARRIENDO",
DIAS_SOLICITADOS AS "DIAS_SOLICITADO",
FECHA_DEVOLUCION AS "FECHA_DEVOLUCION"
--into v_mes, v_nro_patente, v_fecha_ini_arriendo, v_dias_solicitado, v_fecha_devolucion
FROM ARRIENDO_CAMION;

v_dias_atraso:=v_fecha_ini_arriendo-v_fecha_devolucion;
v_valor_multa:=v_dias_atraso;

DBMS_OUTPUT.PUT_LINE('ANNO PROCESO'||v_mes);
DBMS_OUTPUT.PUT_LINE('NRO PATENTE'|| :b_patente);
DBMS_OUTPUT.PUT_LINE('FECHA INI ARRIENDO'||v_fecha_ini_arriendo);
DBMS_OUTPUT.PUT_LINE('DIAS SOLICITADO'||v_dias_solicitado);
DBMS_OUTPUT.PUT_LINE('FECHA DEVOLUCION'||v_fecha_devolucion);
DBMS_OUTPUT.PUT_LINE('DIAS ATRASO'||v_dias_atraso);
DBMS_OUTPUT.PUT_LINE('VALOR MULTA'||v_valor_multa);

END;


Eso de mal llevo
 
Upvote 0

Zuljin

Fundador
Miembro del Equipo
Fundador
ADMIN
Se incorporó
15 Enero 2004
Mensajes
11.872
Ya, estuve leyendo el caso 4 y se ve que requiere acceder a una base de datos para obtener registros así que te voy a poder ayudar "de memoria" nomás. No es lo ideal pero que se le va a hacer.

Necesitas obtener los datos de una tabla y a partir de ahí hacer cálculos, ¿correcto? ¿Vas a obtener los datos del camión ingresando la patente o lo vas a obtener recorriendo la tabla?

Si es recorriendo la tabla debes hacer algo como esto:

DECLARE
v_patente varchar2;
v_valor_multa integer;

v_fecha_ini_arriendo date;
v_fecha_devolucion date;
v_dias_solicitado integer;


CURSOR cur_extraer
IS
SELECT NRO_PATENTE, FECHA_INI_ARRIENDO, FECHA_DEVOLUCION, DIAS_SOLICITADO
FROM ARRIENDO_CAMION;


BEGIN

v_valor_multa:= 25000;

FOR extrae_datos IN extraer
LOOP
v_patente := extraer.patente;
v_v_fecha_ini_arriendo:= extraer.FECHA_INI_ARRIENDO

-- hacer cálculos acá-

END LOOP;

END;


Si lo vas a hacer por una patente en particular (que creo que es la manera en que lo estás armando) puedes hacerlo así


DECLARE
v_patente varchar2;
v_valor_multa integer;
v_fecha_ini_arriendo date;
v_fecha_devolucion date;
v_dias_solicitado integer;


BEGIN
v_valor_multa:= 25000;
v_patente := 'AA1001'; -- Valor en duro

SELECT FECHA_INI_ARRIENDO, FECHA_DEVOLUCION, DIAS_SOLICITADO
into v_fecha_ini_arriendo, v_fecha_devolucion, v_dias_solicitado
FROM ARRIENDO_CAMION
where NRO_PATENTE = v_patente;


-- hacer cálculos
END;


IMPORTANTE: Para que te funcione esta segunda opción debes estar seguro que dada una patente, la consulta te devolverá UN SOLO REGISTRO. Si te devuelve más registros (es decir, si una patente se repite en esa tabla) te lanzará un error.
 
Upvote 0

Matias Rodriguez

Miembro Activo
Se incorporó
4 Abril 2021
Mensajes
9
Ya, estuve leyendo el caso 4 y se ve que requiere acceder a una base de datos para obtener registros así que te voy a poder ayudar "de memoria" nomás. No es lo ideal pero que se le va a hacer.

Necesitas obtener los datos de una tabla y a partir de ahí hacer cálculos, ¿correcto? ¿Vas a obtener los datos del camión ingresando la patente o lo vas a obtener recorriendo la tabla?

Si es recorriendo la tabla debes hacer algo como esto:

DECLARE
v_patente varchar2;
v_valor_multa integer;

v_fecha_ini_arriendo date;
v_fecha_devolucion date;
v_dias_solicitado integer;

CURSOR cur_extraer
IS
SELECT NRO_PATENTE, FECHA_INI_ARRIENDO, FECHA_DEVOLUCION, DIAS_SOLICITADO
FROM ARRIENDO_CAMION;


BEGIN

v_valor_multa:= 25000;

FOR extrae_datos IN extraer
LOOP
v_patente := extraer.patente;
v_v_fecha_ini_arriendo:= extraer.FECHA_INI_ARRIENDO

-- hacer cálculos acá-

END LOOP;

END;


Si lo vas a hacer por una patente en particular (que creo que es la manera en que lo estás armando) puedes hacerlo así


DECLARE
v_patente varchar2;
v_valor_multa integer;
v_fecha_ini_arriendo date;
v_fecha_devolucion date;
v_dias_solicitado integer;


BEGIN
v_valor_multa:= 25000;
v_patente := 'AA1001'; -- Valor en duro

SELECT FECHA_INI_ARRIENDO, FECHA_DEVOLUCION, DIAS_SOLICITADO
into v_fecha_ini_arriendo, v_fecha_devolucion, v_dias_solicitado
FROM ARRIENDO_CAMION
where NRO_PATENTE = v_patente;


-- hacer cálculos
END;


IMPORTANTE: Para que te funcione esta segunda opción debes estar seguro que dada una patente, la consulta te devolverá UN SOLO REGISTRO. Si te devuelve más registros (es decir, si una patente se repite en esa tabla) te lanzará un error.
Okey muchas gracias por ayudarme de verdad, no se si hay alguna forma de quizás en algún momento poder hablarlo por discord o por alguna plataforma por el estilo? si es que puedes obviamente
 
Upvote 0

Zuljin

Fundador
Miembro del Equipo
Fundador
ADMIN
Se incorporó
15 Enero 2004
Mensajes
11.872
Okey muchas gracias por ayudarme de verdad, no se si hay alguna forma de quizás en algún momento poder hablarlo por discord o por alguna plataforma por el estilo? si es que puedes obviamente

Niun problema. Lo que pasa es que no me da mucho tiempo para estar online con un tema en particular, entonces prefiero el foro que es más asíncrono.

Si quieres postea el avance y los errores que te vaya tirando la ejecución del procedimiento almacenado.
 
Upvote 0

Matias Rodriguez

Miembro Activo
Se incorporó
4 Abril 2021
Mensajes
9
Niun problema. Lo que pasa es que no me da mucho tiempo para estar online con un tema en particular, entonces prefiero el foro que es más asíncrono.

Si quieres postea el avance y los errores que te vaya tirando la ejecución del procedimiento almacenado.
Si claro se entiende, si en algún momento puedes y tienes tiempo se agradeceria mucho, igual te dejo mi discord si es que tienes(Matias Rodriguez#4647) o si no lo comento por el foro, Muchas gracias
 
Upvote 0
Subir