Amar_Tchek
Messages postés21Date d'inscriptionvendredi 28 décembre 2012StatutMembreDernière intervention23 janvier 2016
-
23 janv. 2016 à 12:55
Amar_Tchek
Messages postés21Date d'inscriptionvendredi 28 décembre 2012StatutMembreDernière intervention23 janvier 2016
-
23 janv. 2016 à 14:24
Bonjour,
Travaillant actuellement sur une application .Net permettant de visuliser le contenu d'une table, je recontre des difficultés avec la fonction qui renvoi le contenu de la table.
J'utilise le webLogic server d'oracle pour interfacer la BD et l'application, j'ai une fonction qui retourne un enregistrement de la table voulu mais j'arrive pas à l'adapter pour qu'elle renvoie tous les enregistrements de la table.
J'ai utilisé les tableaux, les objects j'ai pas réussi à faire fonctionner le pipeline.
Voici la fonction qui retourne un enregistrement.
CREATE OR REPLACE TYPE DMD_REC AS OBJECT ( matricule VARCHAR2(10), nom VARCHAR2(15), prenom VARCHAR2(15), adresse VARCHAR2(10), profile VARCHAR2(15), service VARCHAR2(15), date_dmd DATE );
CREATE OR REPLACE FUNCTION aff_dmd (dmd_mat IN VARCHAR2) RETURN DMD_REC IS dmd_found demande%rowtype; dmd_rtn DMD_REC; BEGIN SELECT * INTO dmd_found FROM demande WHERE demande.matricule=dmd_mat; dmd_rtn := DMD_REC ( dmd_found.matricule, dmd_found.nom, dmd_found.prenom, dmd_found.adresse, dmd_found.profile, dmd_found.service, dmd_found.date_dmd ); RETURN dmd_rtn; END aff_dmd;
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201626 23 janv. 2016 à 14:07
Salut,
ta fonction retourne 1 seul enregistrement (RETURN DMD_REC)
Si tu veux retourner un resultset, regardes du coté des procédures
stockées qui prennent en paramètres un REF CURSOR (en output)
Tu devras ensuite le spécifier dans ta chaine de connexion (RESULTSET=TRUE) ou un truc du genre.
Voici un exemple :
CREATE OR REPLACE
PROCEDURE get_resultset (
param1 IN uneTable.unChamp%TYPE,
p_resultset OUT SYS_REFCURSOR)
AS
BEGIN
OPEN p_resultset FOR
SELECT
unChamp
FROM
uneTable
--WHERE ...
ORDER BY unChamp;
END
get_resultset ;
Pour les anciennes version d'oracle, il faudra remplacer SYS_REFCURSOR par un type utilisateur, par excemple :
TYPES.myRefCursorType
CREATE OR REPLACE PACKAGE types
AS
TYPE myRefCursorType IS REF CURSOR;
END Types;
Bye...
Amar_Tchek
Messages postés21Date d'inscriptionvendredi 28 décembre 2012StatutMembreDernière intervention23 janvier 2016 23 janv. 2016 à 14:24
Merci pour ta réponse yann_l_san, juste quelques questions encore:
Pourrais-récupérer tous les enregistrements de la table avec cette procédure sans préciser de clause WHERE?
J'utilise Oracle 11g R2 ta solution peut-elle être exporté comme un webservice?
23 janv. 2016 à 14:24
Pourrais-récupérer tous les enregistrements de la table avec cette procédure sans préciser de clause WHERE?
J'utilise Oracle 11g R2 ta solution peut-elle être exporté comme un webservice?
Cordialement,