Regístrate gratis¡Bienvenido a mundodvd! Regístrate ahora y accede a todos los contenidos de la web. El registro es totalmente gratuito y obtendrás muchas ventajas.
Blu-ray, DVD y cine en casa
Regístrate gratis!
Registro en mundodvd
+ Responder tema
Resultados 1 al 9 de 9

Tema: Pregunta SQL Oracle (Secuencias)

Vista híbrida

Txema5 Pregunta SQL Oracle... 07/08/2007, 14:11
tofolinos Re: Pregunta SQL Oracle... 07/08/2007, 17:57
Macasfaj Re: Pregunta SQL Oracle... 07/08/2007, 21:34
Macasfaj Re: Pregunta SQL Oracle... 07/08/2007, 21:39
Macasfaj Re: Pregunta SQL Oracle... 07/08/2007, 22:10
  1. #1
    Creo en Titanic 2 Avatar de Txema5
    Fecha de ingreso
    15 abr, 02
    Mensajes
    10,788
    Agradecido
    5 veces

    Predeterminado Pregunta SQL Oracle (Secuencias)

    Necesitaria saber a traves de alguna query en Oracle, como teniendo unos registros cuyo campo clave es una secuencia, averigue si existe algún hueco en la secuencia para así aprovecharlo y no crear un código nuevo en la secuencia.

    Venga, que sé que por aquí hay gente que tiene mano con el Sql



    Un abrazo!

  2. #2
    aprendiz
    Fecha de ingreso
    08 oct, 05
    Mensajes
    27
    Agradecido
    0 veces

    Predeterminado Re: Pregunta SQL Oracle (Secuencias)

    Buenas, Txema, investigando un poco, me he encontrado una buena respuesta, donde no recomiendan hacer lo que tú comentas, pero de todas maneras, aquí te adjunto tanto el enlace (en inglés) como la select:
    http://asktom.oracle.com/pls/asktom/...:3225867788098

    --Selects interesantes

    --X es tu columna que hace de PK

    --Select que saca todos los huecos
    select x+1
    from t
    where NOT EXISTS ( select null
    from t t2
    where t2.x = t.x+1 )

    --Select que saca sólo uno, y lo bloquea
    select x+1
    from t
    where NOT EXISTS ( select null
    from t t2
    where t2.x = t.x+1 )
    and rownum = 1
    for update

    Un saludo

  3. #3
    Dr. Jones Avatar de Macasfaj
    Fecha de ingreso
    22 oct, 02
    Mensajes
    5,404
    Agradecido
    282 veces

    Predeterminado Re: Pregunta SQL Oracle (Secuencias)

    Iba a responderte pero veo que Tofolinos lo ha hecho perfectamente. La única duda de la subquery es el NULL. ¿Seguro que así funciona y no lo toma como que no existe?

    Yo lo haría así, que es casi igual:

    --Select que saca todos los huecos
    select x+1
    from t
    where NOT EXISTS ( select 1
    from t t2
    where t2.x = t.x+1 )

  4. #4
    Dr. Jones Avatar de Macasfaj
    Fecha de ingreso
    22 oct, 02
    Mensajes
    5,404
    Agradecido
    282 veces

    Predeterminado Re: Pregunta SQL Oracle (Secuencias)

    Acabo de encontrar un error en la Select. ¿Que pasa si hay un hueco de más de una posición? No funcionaría.

    Ahora lo pienso y lo posteo.

    De todos modos, ¿para qué quieres hacer eso, Chemita? No tiene utilidad y no es recomendable.
    Última edición por Macasfaj; 07/08/2007 a las 21:46

  5. #5
    Dr. Jones Avatar de Macasfaj
    Fecha de ingreso
    22 oct, 02
    Mensajes
    5,404
    Agradecido
    282 veces

    Predeterminado Re: Pregunta SQL Oracle (Secuencias)

    ¿Te vale una función? Te la hago de memoria, espero que no la cague.

    FUNCTION CHEMITA RETURN NUMBER IS

    CURSOR C IS
    SELECT X + 1
    FROM T T1
    WHERE NOT EXISTS (SELECT 1 FROM T T2 WHERE T2.X = T1.X + 1);

    N NUMBER;

    BEGIN

    OPEN C;
    FETCH C INTO N;
    CLOSE C;

    RETURN N;

    EXCEPTION
    WHEN OTHERS THEN RAISE;

    END CHEMITA;

    Esto te devolverá la primera ocurrencia vacía. La ocupas y si la llamas otras vez te dará el suguiente.

    Si tú eres el único que lanzas el script no debes tener problemas de concurrencia o bloqueos.

    ¿Te vale?

  6. #6
    Creo en Titanic 2 Avatar de Txema5
    Fecha de ingreso
    15 abr, 02
    Mensajes
    10,788
    Agradecido
    5 veces

    Predeterminado Re: Pregunta SQL Oracle (Secuencias)

    Muy agradecido a ambos por la gran ayuda. Soys geniales. Me habeis dado muy buenas ideas y procuraré hoy mismo ponerlas en práctica.

    Os debo una. Cualquier cosa que este en mi mano, no dudeis en pedirmelo.


    Un abrazo!

+ Responder tema

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.
SEO by vBSEO
Image resizer by SevenSkins