PLSQL Básico - Cursores Explicitos (Explicit Cursors)

Sdílet
Vložit
  • čas přidán 27. 04. 2012
  • Explicación de los cursors explicitos. Un cursor explicito guarda el resultado de la ejecucion de un select, el registro o los registros serán accesados para poder trabajar sobre ellos, yo recomiendo el uso del FOR LOOP ya que este automaticamente nos crea el registro y no necesitamos abrir ni cerrar el cursor. Otra forma de hacerlo es por medio del FETCH.
  • Věda a technologie

Komentáře • 65

  • @ricardosanpietro8698
    @ricardosanpietro8698 Před 9 lety

    Muy claro y bien explicado. Gracias por compartir tu tiempo con los que no sabemos.

  • @jonathanhoyos8191
    @jonathanhoyos8191 Před 9 lety

    Muy buen tutorial!!!
    Excelente, recomendado

  • @domicb1709
    @domicb1709 Před 6 lety

    Gracias, me sirvió durante mis estudios y ahora en el trabajo, de nuevo muchas gracias por compartir tu conocimiento

  • @sebaleal3081
    @sebaleal3081 Před 4 lety

    Explicas de maravilla, muchas gracias!

  • @jj1650
    @jj1650 Před 8 lety +3

    buen vídeo todo muy bien explicado.

  • @jesusbaez100
    @jesusbaez100 Před 9 lety

    Exelente forma de explicar los cursores y el for.

  • @user-ok2rb4vj3p
    @user-ok2rb4vj3p Před 2 lety

    Me encantó la explicación, muchas gracias

  • @diegoquintero3610
    @diegoquintero3610 Před 5 lety

    Sin palabras bro, excelente video!

  • @niru619niru
    @niru619niru Před 5 lety

    Gracias por el video muy claro y me sirvió mucho apenas empiezo en PL SQL

  • @noe7714
    @noe7714 Před 6 lety

    Excelente video, recién comienzo con PL/SQL!
    Un saludo!

  • @Edanro
    @Edanro Před 9 lety

    EXCELENTE EXPLICACIÓN. ME AYUDASTE MUCHO. GRACIAS :)

  • @DiegoGamer-id2le
    @DiegoGamer-id2le Před 10 lety

    Ok excelente me quedo muy claro ahora, gracias amigo por la explicación. Saludos y muchos exitos. Bendiciones.

  • @DiegoGamer-id2le
    @DiegoGamer-id2le Před 10 lety

    Muchas gracias Daniel, me sirvio de mucho tu respuesta. Yo lo habia hecho haciendo una tabla temporal, en la cual le ingrese los valores de la columna DN_ID y luego hice con un NOT IN la comparación para que me diera como resultado los valores que no estan en la columna DN_ID de la directoy_number. pero me pidieron hacerlo sin una tabla temporal y tu respuesta esta excelente. Se te agradece un monton tu ayuda.
    Saludos amigo.

  • @juandavidroseroacevedo1198

    Re genial el video amigo, recomendado

  • @009betta
    @009betta Před 12 lety

    Excelente, nada más que decir, Saludos de Chile

  • @ju2717
    @ju2717 Před 11 lety

    Excelente tus videos muchas gracias por compartir ;)

  • @DiegoGamer-id2le
    @DiegoGamer-id2le Před 10 lety

    de antemano muchas gracias. Muy buenos videos

  • @tecelotlslre
    @tecelotlslre Před 12 lety

    Muy bien exlicado :), saludos desde Xonacatique

  • @franciscoperez9462
    @franciscoperez9462 Před 11 lety

    Muy bien Explicado, Gracias!

  • @keylacusi8526
    @keylacusi8526 Před 8 lety

    Todo tiene más sentido D: Gracias!!

  • @matitohye1622
    @matitohye1622 Před rokem

    excelente muchas gracias

  • @Yuki_Nagato
    @Yuki_Nagato Před 5 lety

    excelente , me has salvado

  • @pabloraulcarranzavigo
    @pabloraulcarranzavigo Před 12 lety

    MUY BUENO LOS TUTORIALES:::::::SALUDOS DESDE PERU .,.,

  • @jcravelo
    @jcravelo Před 5 lety

    Muy buena explicacion

  • @edgarbermeo1132
    @edgarbermeo1132 Před 7 lety

    fue de mucha ayuda bro

  • @jesusalfonsonovaroarrospid5345

    Excelente video :)

  • @iscervant
    @iscervant Před 9 lety

    Video Super Bueno!

  • @Henry78119
    @Henry78119 Před 10 lety

    Excelente Video!!!

  • @borjamayoraltattoo
    @borjamayoraltattoo Před 11 lety

    gracias macho!! gracias ati alomejor apruebo mañana xD ni mi profesor lo explica como tu
    muy buen aporte!!

  • @jkrlos1991
    @jkrlos1991 Před 11 lety

    gracias... buen tuto

  • @lucy216245
    @lucy216245 Před 10 lety

    muchas gracias me sirvio :)

  • @eliceoreyes1950
    @eliceoreyes1950 Před 11 lety

    Excelente Video,,

  • @Kurumi_Kazuha
    @Kurumi_Kazuha Před 5 lety

    Muy buen video gracias ahora entiendo mucho mejor los cursores y sus maravillosas posibilidades, aunque ya sea para bien o mal, el nivel de dificultad en mi instituto es mucho mayor y al final igual me destruyen xD

  • @brunoalexissantillansantil4637

    me salio amigo copie el for para el update pero borre la impresion de ese for copiado ,para q solo imprimiera ya actualizado ,gracias m ayudas bastante , mi admiracion y respeto .

  • @Chemaclass
    @Chemaclass Před 11 lety

    Gracias :D

  • @JorgeGonzalez-jl9xr
    @JorgeGonzalez-jl9xr Před 8 lety

    Hola Daniel. Gracias por el video tutorial. Yo estoy usando Postgresql. Este lenguale PL/SQL es un lenguaje standard por lo que me imagino que me servirá para usarlo dentro del postgresql. Sigues activo aclarando las dudas?
    Gracias

  • @DanielNietoEscobar
    @DanielNietoEscobar  Před 11 lety

    solamente 10 registros, para limitar usamos un filtro adicional en tu cursor que seria AND rownum

  • @sinfonico1984
    @sinfonico1984 Před 8 lety

    Don Daniel, primero que todo quisiera felicitarlo por su magnifico trabajo, muy bien explicado... además, se nota que hay una preocupación por entregar un producto de calidad.
    _Quisiera preguntarle si en sus próximos vídeos explicará "Triggers", seria magnifico poder tener uno de ellos ya que la mayoría, o tienen problemas de audio o simplemente el ingles Indú es complicado captarlo (sin ofender... claro).

  • @DanielNietoEscobar
    @DanielNietoEscobar  Před 10 lety

    Que tal Lu cy , si estas usando Oracle SQL developer para programar, el mensaje "bloque anonimo terminado" aparece en una ventana, pero la salida al dbms la activas en otra , para verla te vas al menu "ver" luego click donde dice "Salida DBMS" ahi aparecerà una pantalla, tiene un signo de +, lo activas para permitir la salida, haz una prueba con un codigo como:
    begin
    dbms_output.put_line('salida');
    end;
    Si eso ya està entocnes quizà el query del cursor no regresa, correlo con tu dato, saludos

  • @lucy216245
    @lucy216245 Před 10 lety

    hola buenas noches ,una consulta yo hice el ejercicio del cursor mandandole un parametro.pero no me muestra los resultados sino me dice bloque anonimo terminado.

  • @DanielNietoEscobar
    @DanielNietoEscobar  Před 11 lety

    Perdon Yamil por la tardanza, mira en el video "Oracle PLSQL Basico Parte 1 - DML (insert, select, update, delete) en la parte de descripcion viene el link para las tablas, tambien hay otro video para que puedas hacer tus practicas online. cualquier duda quedo al pendiente. gracias

  • @DanielNietoEscobar
    @DanielNietoEscobar  Před 10 lety

    Que tal Maximo, espero entiendas mi logica, usè una forma simple
    create or replace procedure my_procedure as
    --
    v_count number;
    v_max number;
    v_num number := 0;
    begin
    select max(dn_id) into v_max from directory_number;
    --
    for v_count in 1..v_max loop
    begin
    select dn_id
    into v_num
    from directory_number
    where dn_id = v_count;
    exception when no_data_found then
    dbms_output.put_line(v_count);
    end;
    end loop;
    end my_procedure;

  • @DiegoGamer-id2le
    @DiegoGamer-id2le Před 10 lety

    Hola Daniel, queria saber si me ayudabas con este problema, Suponiendo la tabla Directory_number cuya llave primaria es la columna DN_ID. Necesito que implementes un procedimiento PL/SQL que imprima los valores de DN_IDs faltantes en dicha tabla. Los valores encontrados deberan ser impresos a traves del comando dbms_output.put_line().
    ej.supongamos que en la tabla existiera 2 lineas. Una linea con valor id 1 en la siguiente tiene 3. En este caso la linea 2 no existe, entonces tiene q imprimir 2

  • @u2lover10
    @u2lover10 Před 6 lety

    Hola Daniel! muy bueno el video! queria consultarte si el "FOR UPDATE nowait" lo que hace es dar prioridad a ese proceso frente a otros que se estan ejecutando al mismo tiempo. por otro lado queria consultarte si esta misma sentencia sirve para los store procedure de SQL Server.
    Gracias!

    • @DanielNietoEscobar
      @DanielNietoEscobar  Před 6 lety

      Hola Cecilia, el "FOR UPDATE nowait" no da prioridad al proceso como tal, primeramete valida que el rango de registros que se esta consultando no tenga bloqueos y en caso de que asi sea termina el proceso en error. Esto porque cuando no es usado si alguna de las filas esta bloqueada por algun proceso o usuario los programas pueden quedar como ejecutandose cuando en realidad estan esperando que se se libere el recurso. Se puede agregar un rango de tiemop al final que se maneja en segundos (FOR UPDATE nowait 15). Si el recurso esta disponible si reserva los datos para ser actualizados. en SQL server pude ver algo como BEGIN TRAN
      SELECT ID, Col1
      FROM First WITH(NOWAIT)
      WHERE ID = 1

  • @ELNIKO16MARI
    @ELNIKO16MARI Před 9 lety

    Como puedo cerrar un cursor explicito por medio de un if ??

  • @sabrinasandi4064
    @sabrinasandi4064 Před rokem

    Como hago para dirigirme a un registro especifico del cursor, por ejemplo solo quiere imprimir el registro #2?

  • @brunoalexissantillansantil4637

    ojala subas videos d plsql avanzado o ya lo isistes informame porfavor gracias

  • @queusuariolargo
    @queusuariolargo Před 11 lety

    Hola, muy bueno el video!
    Una consulta, yo tengo que hacer algo muy parecido, pero en el for interno tengo que mostrar 10 registros de cada una. No todo. Como puedo hacer eso?
    Quiero mostrar de una tabla de id de localidades, de cada localidad solo 10 clientes:
    BEGIN
    FOR R_LOCALIDADES IN C_LOCALIDADES LOOP
    FOR R_GEOGRA IN C_GEOGRA (R_LOCALIDADES.CONTRATO) LOOP
    DBMS_OUTPUT.PUT_LINE(R_GEOGRA.GEOGRAP_LOCATION_ID||'*'|| R_GEOGRA.DESCRIPTION);
    END LOOP;
    END LOOP;
    END;

  • @DanielNietoEscobar
    @DanielNietoEscobar  Před 10 lety +1

    a si claro que si m,, mira si te fijas tenemos un ciclo, saque primero el numero maximo que tenemos de ids ,, despues el ciclo va de 1 hasta ese numero,, dentro de ese ciclo metemos un begin para que controle cuando no encuentre dato, recordando que V_COUNT es el que iria contando de 1 hasta el maxico ,, entraria a ese query ,, supongamos que V_COUNT = 5 pero cuando hace la comparacion DN_ID = 5 no existe entonces se iria a excepciones e imprimiria ese numero. Me dices si no queda claro

  • @ruthrios6537
    @ruthrios6537 Před rokem

    Que editor usas para hacer las pruebas?

    • @DanielNietoEscobar
      @DanielNietoEscobar  Před rokem

      Hola Ruth, Oracle da oportunidad de tener un espacio de trabajo gratis.. solo registrarte apex.oracle.com/en/learn/getting-started/ saludos

  • @fabianrr
    @fabianrr Před 5 lety

    Podrias hacer un remake de los videos, pero usando el esquema hr.

  • @irethmar6148
    @irethmar6148 Před 5 lety

    Muy bueno, tenés algun tutorial con Fetch?? justo eso me piden :(

    • @DanielNietoEscobar
      @DanielNietoEscobar  Před 5 lety

      Hola Ireth, de FETCH no puse,, tienes el ejemplo de lo que te piden? igual con eso podemos validar.. Fetch al final del query para regresar cierta cantidad de columnas o FETCH para cuando tenemos un query dinamico y queremos ir a traves de las lineas del cursor. Saludos.

  • @DiegoGamer-id2le
    @DiegoGamer-id2le Před 10 lety

    Solo me gustaria que me dieras una breve explicación de esta parte, siento que me perdi aca.
    BEGIN
    SELECT DN_ID INTO V_NUM FROM DIRECTORY_NUMBER
    WHERE DN_ID = V_COUNT
    De antemano muchas gracias.
    Saludos cordiales.

  • @felisadiaz6189
    @felisadiaz6189 Před 7 lety

    HOLA NO ENTENDÍ POR QUE NO ES RECOMENDABLE USAR EN FETCH Y COMO SE USARÍA? SALUDOS

    • @DanielNietoEscobar
      @DanielNietoEscobar  Před 7 lety

      Hola Felisa, no es recomendable porque lo de agregar la instruccion del fetch tienes que abrir y cerrar el cursor en momentos especificos. Esto ya lo hace automaticamente el FOR-LOOP/. La cuestion es porque deberias usar FETCH? saludos, DN

    • @felisadiaz6189
      @felisadiaz6189 Před 7 lety

      Es que apenas comienzo en esto de PL/SQL y me confundo aun. ¿Que es exactamente el FECTH?

  • @josealbertoclavijozambrana3831

    para que te sirver for en base de datos eso no lo entendi muy bien

    • @DanielNietoEscobar
      @DanielNietoEscobar  Před 9 lety

      José Alberto Clavijo Zambrana es la manera como recorres el cursor. Entre alguna otra aplicacion que podria tener.

  • @mariorogelio
    @mariorogelio Před 9 lety

    7:07 Como enviar un parámetro a un cursor.

    • @DanielNietoEscobar
      @DanielNietoEscobar  Před 9 lety +1

      Mario Rogelio Solamente lo declaras ejemplo cursor c_1(p1 varchar2) is select ... y cuando lo usas le mandas el parametro necesario.

    • @mariorogelio
      @mariorogelio Před 9 lety

      Daniel Nieto Muchas gracias Daniel, no era pregunta, solo era para marcar que allí empieza la explicación.
      Pero muchas gracias, ahora sé que aún contesta.

  • @yamildelgado6555
    @yamildelgado6555 Před 11 lety

    Hola buen dia Daniel nieto esta interesante tu video me gustaria hacer los ejercicios ,podrias proporcionarme la el script de las tablas que necesito por favor .. yamildelgado@hotmail.com