• Portada
    • Recientes
    • Usuarios
    • Registrarse
    • Conectarse

    Ayuda con SQL

    Programado Fijo Cerrado Movido
    Software
    4
    11
    1.4k
    Cargando más mensajes
    • Más antiguo a más nuevo
    • Más nuevo a más antiguo
    • Mayor número de Votos
    Responder
    • Responder como tema
    Accede para responder
    Este tema ha sido borrado. Solo los usuarios que tengan privilegios de administración de temas pueden verlo.
    • vallekanoV
      vallekano
      Última edición por

      Hola,

      Necesito ayuda con una cosita que no condigo hacer.

      He creado un procedimiento en SQL que me da unos resultados.
      Osea, que si pongo SELECT * FROM procedimiento me devuelve un conjunto de filas.

      Vale, pues ahora necesito crear una vista que me de el mismo resultado. Osea que la vista llame al procedimiento pero no se como hacerlo.

      En teoría es algo asi:

      CREATE VIEW vista AS
      SELECT * FROM procedimiento

      Pero me da un error diciendo que no existe la tabla "procedimiento".

      Como se hace esto??? A ver si me podeis decir algo que me urge un poco.

      1 Respuesta Última respuesta Responder Citar 0
      • marcaljM
        marcalj
        Última edición por

        A ver, de mis apuntes de SQL tengo esto:

        Vistas:
        –------

        CREATE VIEW nombre_vista (columna1, columna2, … columnaN) AS SELECT columna1, columna2, … columnaN FROM tabla1, tabla2, … tablaN WHERE …..

        Bien, cuando creas la tabla le dices el nombre que quieras i entre parentesis las columnas o variables que quieres que tenga. Luego cuando haces el "SELECT" ten en cuenta que solo puedes pillar "N" columnas o variables, si no no sabra donde poner las de más o las de menos.

        Recuerda que las vistas se quedan en memoria hasta que no la borras:

        DROP VIEW nombre_vista

        Puedes meter mas cosas, como el "RESTRICT" o el "CASCADE" pero ya no me acuerdo muy bien…

        Espero que te sirva.

        Salu2!

        1 Respuesta Última respuesta Responder Citar 0
        • vallekanoV
          vallekano
          Última edición por

          Si, esa es una vista normal y las tengo más que controladas, pero el problema es que la SELECT que hay dentro de la vista es el resultado de un procedimiento.

          Pongo el código:

          SET TERM //;
          CREATE PROCEDURE Apartado3cAux
          RETURNS (tabla CHARACTER(31),indice CHARACTER(31),tipo CHARACTER(25),activo CHARACTER(10)) AS
          DECLARE VARIABLE T CHARACTER(31);
          DECLARE VARIABLE I CHARACTER(31);
          DECLARE VARIABLE U SMALLINT;
          DECLARE VARIABLE F CHARACTER(31);
          DECLARE VARIABLE ID SMALLINT;
          BEGIN
          FOR SELECT RDB$RELATION_NAME,RDB$INDEX_NAME,RDB$UNIQUE_FLAG, RDB$FOREIGN_KEY,RDB$INDEX_ID FROM RDB$INDICES
          WHERE RDB$RELATION_NAME NOT LIKE 'RDB$%'
          INTO :T,:I,:U,:F,:ID
          DO
          BEGIN
          tabla = :T;
          indice = :I;
          IF (:ID IS NULL) THEN
          activo='INACTIVO';
          ELSE
          activo='ACTIVO';
          IF (:U = 1) THEN
          IF (:ID=1) THEN
          tipo='CLAVE PRIMARIA';
          ELSE
          tipo ='INDICE UNICO';
          ELSE
          IF (:F IS NOT NULL) THEN
          tipo = 'CLAVE FORANEA';
          ELSE
          tipo = 'INDICE CON DUPLICADOS';
          SUSPEND;
          END
          END//
          SET TERM ;//

          Bien, pues necesito una vista que me devuelva lo que devuelve el procedimiento.

          Si pongo SELECT * FROM Apartado3cAux me da el resultado que yo quiero, pero tengo que obtenerlo a traves de una vista. Que obtenga el mismo resultado con SELECT * FROM Apartado3c siendo Apartado3c una vista.

          1 Respuesta Última respuesta Responder Citar 0
          • marcaljM
            marcalj
            Última edición por

            No se tio, ahi ya me quedo cojo, lo siento.

            Por cierto, que lenguaje es ese?

            1 Respuesta Última respuesta Responder Citar 0
            • vallekanoV
              vallekano
              Última edición por

              Publicado originalmente por marcalj
              **
              Por cierto, que lenguaje es ese?**

              Es SQL. xD Solo que ya un poquito complejo.

              1 Respuesta Última respuesta Responder Citar 0
              • daemonzD
                daemonz
                Última edición por

                Joder y yo ke me kedo en las consultas simples xD

                A esa variante no la llaman PL/SQL ?

                1 Respuesta Última respuesta Responder Citar 0
                • vallekanoV
                  vallekano
                  Última edición por

                  Publicado originalmente por daemonz
                  **Joder y yo ke me kedo en las consultas simples xD

                  A esa variante no la llaman PL/SQL ?**

                  Pues no tengo ni idea. A mi me lo enseñaron como SQL, a secas. Pero podría ser….....

                  No hay ningún monstruo del SQL por aquí??????

                  1 Respuesta Última respuesta Responder Citar 0
                  • PaladiP
                    Paladi
                    Última edición por

                    Yo lo he dado este año, y tambien me he quedado con consultas simples, joins, subconsultas… de ahi no hemos pasado :$

                    1 Respuesta Última respuesta Responder Citar 0
                    • marcaljM
                      marcalj
                      Última edición por

                      Cojones que guapo…

                      Lo que el SQL no es un lenguaje, es un pseudo-lenguaje ya que no es ni lenguaje para script ni para compilacion, o algo raro me explicaron.

                      Pero bueno, se llamara algo parecido como comentaron mas arriba.

                      Por cierto, como lo usas? en un programa en C o como?

                      Salu2!

                      1 Respuesta Última respuesta Responder Citar 0
                      • vallekanoV
                        vallekano
                        Última edición por

                        No, es un procedimiento que se crea en la propia base de datos. Igual que creas una vista o un trigger pues puedes crear un procedimiento que haga cosas. Son eso, programitas que ejecuta el gestor de base de datos.

                        1 Respuesta Última respuesta Responder Citar 0
                        • daemonzD
                          daemonz
                          Última edición por

                          Publicado originalmente por marcalj
                          Lo que el SQL no es un lenguaje, es un pseudo-lenguaje ya que no es ni lenguaje para script ni para compilacion, o algo raro me explicaron.

                          Llevas razon, es un pseudolenguaje embedido en los propios gestores de la base de datos (SGBD), en mis apuntes le llama LMD (lenguaje de manipulacion de datos).

                          Comente lo del PL/SQL pq he oido hablar de el, y se ke es lo ke se utiliza para crear los triggers, algoritmos, etc.

                          1 Respuesta Última respuesta Responder Citar 0
                          • 1 / 1
                          • First post
                            Last post

                          Foreros conectados [Conectados hoy]

                          0 usuarios activos (0 miembros e 0 invitados).
                          febesin, pAtO,

                          Estadísticas de Hardlimit

                          Los hardlimitianos han creado un total de 543.3k posts en 62.8k hilos.
                          Somos un total de 34.8k miembros registrados.
                          seaofink ha sido nuestro último fichaje.