begin process at 2010 02 09 22:47:27
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

Oracle

 > 

Functions

 > 

fonction pl/sql retournant un tableau


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

fonction pl/sql retournant un tableau

mercredi 28 novembre 2007 à 11:24:49 | fonction pl/sql retournant un tableau

mahni

bonjour,
    Je voudrais savoir comment écrire une fontion qui retourne un tableaux comme résultat en pl/sql. Je voulais tout simplement afficher à partir d'un environnement de développement un "select * from..." à partir d'une table existante.

Merci


jeudi 18 septembre 2008 à 10:57:13 | Re : fonction pl/sql retournant un tableau
jeudi 18 septembre 2008 à 11:02:11 | Re : fonction pl/sql retournant un tableau
jeudi 18 septembre 2008 à 11:03:09 | Re : fonction pl/sql retournant un tableau

pycatwork

Voila comment s y prendre

-----------------
Step 1 : creation d un type qui correspond a ce qu il faut renvoyer
-----------------
CREATE TYPE TRC_MEASURE AS OBJECT
(
PROGRAM VARCHAR2(255),
ACTION VARCHAR2(255),
ELLAPSED_TIME NUMBER(11)
)
;

-----------------
Step 2 : creation d un type qui correspond a une structure de type table
-----------------
CREATE TYPE TRC_MEASURE_RESULTS IS TABLE OF TRC_MEASURE
;

-----------------
Step 3 : creation de la fonction
-----------------
Points importants
Il faut rajouter PIPELINED a la declaration de la fonction
Il faut renvoyer les records a l aide de l instruction PIPE ROW
Il ne faut pas faire de return d une structure ou d une valeur
--
FUNCTION TRC_GET_RESULT (p_Camp IN NUMBER) RETURN TRC_MEASURE_RESULTS PIPELINED
IS
   TYPE MyCursorType IS REF CURSOR;
   MyCursor MyCursorType;
   MyCounter NUMBER DEFAULT 1;
   COL1  Varchar2(255);
   COL2  Varchar2(255);      
   COL3  Number(11);          
   MySQLstmt VARCHAR(200);
   BEGIN

   MySQLstmt :=   ;
   MySQLstmt := MySQLstmt ||  select prg,lib,deltassd*86400+deltassh*3600+deltassm*60+deltasss ellapsed_time  from TRC_DATA  ;
   MySQLstmt := MySQLstmt ||   where campid= ;
   MySQLstmt := MySQLstmt || p_Camp;
   MySQLstmt := MySQLstmt ||   and deltassd*86400+deltassh*3600+deltassm*60+deltasss is not null  ;
   MySQLstmt := MySQLstmt ||   order by id ;  

       OPEN MyCursor FOR MySQLstmt;
       LOOP
             FETCH MyCursor INTO  COL1,COL2,COL3 ;
             EXIT WHEN MyCursor%NOTFOUND;
             MyCounter := MyCounter+1;
      PIPE ROW(TRC_MEASURE (COL1,COL2,COL3) );
   END LOOP;
   CLOSE MyCursor;      
   -- RETURN instruction should not be used as it has been done through the pipe
   -- RETURN MyListOfRecords;
    RETURN;
END
;
/
show errors;
/

-----------------
Step 4 : Utilisation dans ton outil SQL prefere (TOAD !!!!)
-----------------
A l aide de l instruction TABLE on peut alors recuperer le resultat de la fonction

SELECT * from TABLE(TRC_GET_RESULT(1))
lundi 26 janvier 2009 à 17:11:19 | Re : fonction pl/sql retournant un tableau

kekranx

Merci pour la réponse. Sans déconner il faut faire tout ça en pl sql pour ramener un tableau de résultats ? Je trouve ça un peu abusé tout de même.


Cette discussion est classée dans : fonction, sql, tableau, retournant, pl


Répondre à ce message

Sujets en rapport avec ce message

pl/sql [ par midouesstt ] slt a tous j suis debutant en pl/sql e j cherche une reponse a ma question: ecrire une fonction qui pour chaque departement donne en parametre de la requete SQL INSERT tableau 2D dans table sql [ par LaTatadu91 ] Bonjour,je debute en SQL, je precise avant tout!je programme actuellement un petit logiciel sous VC++ et j'effectue quelques requetes SQL pour attaque Procédure ou fonction et retour d'une valeur [ par Max207 ] Bonjour à tous,Je fais mes premiers pas en SQL Server et je rencontre quelques difficultés. Pas de soucis niveau création des tables & cies car je sui fonction sql srver [ par bmeri ] bjr j'ai besoin de votre aide pour trouver une fonction qui permet de renvoyer le trimestre pour pouvoir effectuer  un filtre avec ,merci d'avance PL/SQL [ par watt ] je suisn entrain de developper sous oracle form  developper 2000je voudrais le code d'enregistrement dans la table  en PL/SQL de mes saisies sur le fo ORA-06502: PL/SQL erreur numérique ou erreur sur valeur [ par kharon_rp ] Marc Traitement des chaînes en PL/SQL ? [ par mascoco ] Bonjour,Je suis nouveau en PL/SQL, je souhaite faire un petit programme en pl/sql qui extrait les données à partir d'une page HTML grâce au package UT renseignement sur le pl sql [ par lenneth666 ] bonjourj'ai un compte rendu a faire sur l'interfacage entre le C et le Pl SQL, connaitriez vous de bon document comme référence a ce sujet ? merci d'a ORACLE - PL SQL - compter le nombre de lignes [ par yaya2669 ] Bonjour,J'essai tant bien que mal de trouver une fonction qui me permettrait de lister mes tables avec le nombre d'enregistrement dans une base oracle code calendrier sous pl/SQL [ par foloyo3 ] bonjour tout le monde ,je veux avaoir un code sous pl/SQL qui permet de creer un calendrier.merci;


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,640 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales