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)

  1. #1
    Creo en Titanic 2 Avatar de Txema5
    Fecha de ingreso
    15 abr, 02
    Mensajes
    10,792
    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 22: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,792
    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!

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

    Predeterminado Re: Pregunta SQL Oracle (Secuencias)

    De nada, guapetón. ;)

    Llevo trabajando, a mi pesar, en el mundo Oracle desde hace ya 6 años. No dudes en preguntar lo que sea.

    Cualquier cosa que este en mi mano, no dudeis en pedirmelo.
    Esa cabeza de "Yo, Robot".......

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

    Predeterminado Re: Pregunta SQL Oracle (Secuencias)

    De nada, hombre, a mandar. ;)

    macasfaj, ya somos dos, yo también llevo sobre 6 años con esto de Oracle, por suerte, ahora estoy empezando a toquetear algo de java, a ver si cambio un poco de tercio!
    La web en la que estaba una de las soluciones, la verdad es que siempre me ha servido muy útil, tiene muy buenas ideas y el tal Tom es un gurú de Oracle de lo mejorcito, incluso alguna vez me ha contestado preguntas directamente, y encima dando en el clavo..

    La web es esta:
    http://asktom.oracle.com/

    saludillos oraclienses!

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

    Predeterminado Re: Pregunta SQL Oracle (Secuencias)

    Yo también tengo que ir pasando a Java, a ver.

    Me apunto esa Web, no la conocía. Gracias.

+ 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 © 2024 vBulletin Solutions, Inc. All rights reserved.
SEO by vBSEO
Image resizer by SevenSkins