Forum APEX - Développement Oracle Application Express

Le site des développeurs francophones APEX - Oracle Application Express

Vous n'êtes pas identifié(e).

Annonce

Bienvenue sur le forum Oracle APEX

S'il s'agit de votre première visite, nous vous invitons à consulter la FAQ en cliquant sur le lien ci-dessous. Vous pouvez poster ici toutes vos questions sur l'installation, le développement (composants clients et serveurs), l'administration des instances Oracle APEX. Par ailleurs, ce forum diffuse les annonces et actualités relatives à Oracle APEX.

Oracle APEX 4.1

Oracle APEX 4.1 est disponible depuis le 24 août 2011.

Oracle APEX 4.0

Oracle APEX 4.0 est disponible depuis le 23 juin 2010. Il existe 2 distributions, une distribution en langue anglaise uniquement et une distribution multilingue.

#1 2011-09-02 10:49:29

apocalypse
Membre
Inscription : 2011-09-02
Messages : 16

Requete dynamique

Bonjour,

Je débute sous l'application Apex et je ne réussi pas à faire ce que je souhaite: créer un groupe de radio bouton à l'aide d'une requête dynamique.

En effet la table utilisé est défini par l'utilisateur.

J'ai essayé simplement en utilisant cette requête:

select recence d, recence r
from :P_TABLE
group by recence
order by 1

:P_TABLE représente l'item contenant le nom de la table.

Cependant cette requête n'est pas permise dans la création de la LOV.


Merci d'avance pour votre aide.

Hors ligne

#2 2011-09-05 14:06:00

admin
Administrateur
Inscription : 2010-08-02
Messages : 83

Re : Requete dynamique

Bonjour,

Pour créer un groupe de radio bouton dynamique, il faut lui associer une LOV dans laquelle tu définie une fonction qui te retourne le résultat de la requête.

Une LOV peut être définie de 2 manières

Exemple 1
select ename d, empno r from emp order by 1

Exemple 2
begin
    return 'select ename d, empno r from emp order by 1';
end;

Il suffit de remplacer le 2ième exemple par ta fonction PL/SQL qui te retourne un select dynamique. Voici un exemple simple de fonction PL/SQL

D'abord, créons la fonction :

CREATE OR REPLACE FUNCTION GET_LIST
(
P_DEPT IN VARCHAR2)
RETURN NUMBER
IS
    W NUMBER;
BEGIN
    IF P_DEPT = 'Sales
    THEN
        RETURN 30;
    ELSE
        RETURN 10;
    END IF;
END;

Ensuite, définissons, la LOV :

Dans la LOV, tu entres RETURN GET_LIST(:P1_DEPARTEMENT);

Hors ligne

#3 2011-09-05 15:08:19

apocalypse
Membre
Inscription : 2011-09-02
Messages : 16

Re : Requete dynamique

Merci pour cette réponse mais le problème se situe sur le nom de la table qui est choisie dynamiquement.

J'ai cependant réussi à corriger le problème, il ne me reste plus qu'à réussir à identifier les valeurs sélectionnées par l'utilisateur dans la shuttle list.

Hors ligne

#4 2011-09-05 15:50:29

apocalypse
Membre
Inscription : 2011-09-02
Messages : 16

Re : Requete dynamique

En passant par une fonction stockée pour créer ma liste je n'ai pas de problème :

CREATE OR REPLACE FUNCTION Creer_List(Champ VARCHAR2, Nom_Tab VARCHAR2) RETURN VARCHAR2 IS
  
  
  Rq VARCHAR2(32000);
  
BEGIN
   
  RETURN 'select '||champ||' d,'||champ||' r
from '||Nom_Tab||'
where '||champ||' is not null
group by '||champ||'
union
select '||chr(39)||'vide'||chr(39)||', '||chr(39)||'vide'||chr(39)||'
from dual
order by 1';

END;
/

Hors ligne

Pied de page des forums