Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    100

    [PL/SQL]Query come output di una funzione/procedura

    Salve è possibile che una funzione/procedura(passandogli dei parametri appropiati) possa dare come output un risultato composto da varie tuple e vari attributi?
    Es. stupido(giusto x rendere l'idea):
    dando in input il numero di una camera alberghiera,voglio sapere i nomi e cognomi delle persone che vi hanno soggiornato dentro.(so che si puo fare direttamente tramite una query ccn operatore join,ma è giusto x rendere l'idea di cosa voglio avere come output)

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326
    si puo fare

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    100
    posteresti qlk codice funzionante???in modo ke prendo spunto da esso..

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326
    io non conosco questo database PL, quindi suppongo che potrebbero esserci delle varianti.
    io utilizzo interbase/firebird.


    in sql puoi fare le query parametriche
    codice:
    select
    clienti.id,
    clienti.nome,
    clienti.cognome
    from clienti
    where clienti.id=:IdCliente
    e poi in un secondo momento (prima di eseguire la query) definisci il parametro IdCliente


    oppure puoi creare una 'Stored Procedure', che e' una procedura memorizzata all'interno del tuo database a che in sintesi passi i parametri da te definiti e ti restituisce un dataresoult dopo una serie di operazioni....

    in questo esempio passo come parametro in valore idanagrafica, e ottengo come dataresoult 1 solo record contenente due field che sono TOTALEIMPORTOA e TOTALEIMPORTOB.

    chiaramente a secondo delle esigenze si puo ottenere un dataresoult di n record e n fields.

    codice:
    CREATE PROCEDURE TOTALI (
        IDANAGRAFICA_IN INTEGER)
    RETURNS (
        TOTALEIMPORTOA NUMERIC(15,2),
        TOTALEIMPORTOB NUMERIC(15,2))
    AS
    BEGIN
      /* Procedure Text */
        SELECT
        SUM(movimenti.importoa),
        SUM(movimenti.importob)
        FROM movimenti
        WHERE movimenti.idanagrafica=:idanagrafica_in
        INTO
        totaleimportoa,
        totaleimportob;
    
        IF (totaleimportob IS NULL) THEN totaleimportob=0;
    
        SUSPEND;
    END
    ciao

  5. #5
    No, in PL/SQL non si fa come in T/SQL, nel quale una stored procedure è praticamente una query parametrica. Le procedure sono procedure. Volendo puoi ritornare come parametro di output il riferimento ad un cursore, ma tale dato lo puoi utilizzare all'interno di altro codice, non come data source come se fosse una tabella o una vista.
    All of the true things that I am about to tell you are shameless lies.
    (Bokonon Books)

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    100
    quindi plsql ha questa limitazione,posso utilizzare il puntatore del cursore ad un altra procedura,ma non visualizzare "cosa contiene il cursore" come output,giusto?

  7. #7
    Sì, fondamentalmente, la procedura può restituire un dato di un tipo complesso, utilizzabile tramite pl/sql o da un linguaggio che supporti tale tipo di dato. Ma non si tratta dell'output che avresti facendo una select.

    Difatti, se esegui tale query da sqlplus:

    codice:
    select table_name, tablespace_name from user_tables;
    avrai un output.

    Mentre, se provi a trasformalo in un blocco PL/SQL, in questo modo:

    codice:
    begin
        select table_name, tablespace_name from user_tables;
    end;
    /
    e poi provi ad eseguirlo, sempre da sqplus, avrai un errore.

    Fondamentalmente non la considero una limitazione, se una cosa è una procedura non è una vista.
    All of the true things that I am about to tell you are shameless lies.
    (Bokonon Books)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.