• Portada
    • Recent
    • Users
    • Register
    • Login

    Ayuda con SQL

    Scheduled Pinned Locked Moved Software
    11 Posts 4 Posters 1.8k Views 1 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • vallekanoV Offline
      vallekano
      last edited by

      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 Reply Last reply Reply Quote 0
      • marcaljM Offline
        marcalj
        last edited by

        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 Reply Last reply Reply Quote 0
        • vallekanoV Offline
          vallekano
          last edited by

          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 Reply Last reply Reply Quote 0
          • marcaljM Offline
            marcalj
            last edited by

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

            Por cierto, que lenguaje es ese?

            1 Reply Last reply Reply Quote 0
            • vallekanoV Offline
              vallekano
              last edited by

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

              Es SQL. xD Solo que ya un poquito complejo.

              1 Reply Last reply Reply Quote 0
              • daemonzD Offline
                daemonz
                last edited by

                Joder y yo ke me kedo en las consultas simples xD

                A esa variante no la llaman PL/SQL ?

                1 Reply Last reply Reply Quote 0
                • vallekanoV Offline
                  vallekano
                  last edited by

                  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 Reply Last reply Reply Quote 0
                  • PaladiP Offline
                    Paladi
                    last edited by

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

                    1 Reply Last reply Reply Quote 0
                    • marcaljM Offline
                      marcalj
                      last edited by

                      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 Reply Last reply Reply Quote 0
                      • vallekanoV Offline
                        vallekano
                        last edited by

                        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 Reply Last reply Reply Quote 0
                        • daemonzD Offline
                          daemonz
                          last edited by

                          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 Reply Last reply Reply Quote 0

                          Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                          Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                          With your input, this post could be even better 💗

                          Register Login
                          • 1 / 1
                          • First post
                            Last post

                          Foreros conectados [Conectados hoy]

                          1 usuarios activos (0 miembros y 1 invitados).
                          febesin, pAtO, smith

                          Estadísticas de Hardlimit

                          Los hardlimitianos han creado un total de 543.8k posts en 62.9k hilos.
                          Somos un total de 37.6k miembros registrados.
                          adriannadimatt ha sido nuestro último fichaje.
                          El récord de usuarios en linea fue de 222 y se produjo el Mon Jul 27 2026.