IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo

FAQ OracleConsultez toutes les FAQ

Nombre d'auteurs : 17, nombre de questions : 139, dernière mise à jour : 30 mai 2016  Ajouter une question

 

Cette F.A.Q. a été réalisée à partir des questions fréquemment posées sur le forum Oracle de www.developpez.com et de l'expérience personnelle des auteurs. Elle pourra traiter de tout type de questions portant sur les technologies Oracle.

Nous espérons que cette F.A.Q. saura répondre à un maximum de vos questions. Nous vous souhaitons une bonne lecture.

L'équipe Oracle de Developpez.

SommaireOutilsPortal (3)
précédent sommaire suivant
 

Vous allez être sûrement amené, dans le cours de votre développement sur Portal, à trouver des informations sur l'utilisateur couramment connecté. Les informations les plus utilisées sont surtout l'id de l'utilisateur connecté, ainsi que son login, voire la langue qu'il utilise actuellement avec son browser sur le Portal.

Pour cela vous disposez d'un package Portal qui vous permet d'obtenir ces informations très facilement :

PORTAL.WWCTX_API

Ce package dispose d'un grand nombre de fonctions et procédures qui vous permettront de trouver des informations sur l'utilisateur connecté.

Par exemple vous utiliserez :

Code sql : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
-- Pour trouver l'id de l'utilisateur 
declare 
p_user_id number:=portal.wwctx_api.get_user_id; 
begin 
htp.prn('Votre id est '||p_user_id); 
end; 
/ 
  
-- Pour trouver le login de l'utilisateur 
declare 
p_user_name varchar2(30):=portal.wwctx_api.get_user; 
begin 
htp.prn('Votre login est '||p_user_name); 
end; 
/ 
  
-- Pour trouver la langue utilisée par le browser de l'utilisateur 
declare 
p_lang varchar2(10):=portal.wwctx_api.get_nls_language; 
begin 
htp.prn('La langue actuellement utilisée est '||p_user_id); 
end; 
/

Mis à jour le 30 novembre 2004 helyos

Vous allez être sûrement amené, dans le cours de votre développement sur Portal, à trouver des informations sur un utilisateur lambda. En règle générale vous allez surtout chercher à connaître son id à partir de son login ou inversement.

Pour cela vous disposez d'un package Portal qui vous permet d'obtenir ces informations très facilement :

PORTAL.WWSEC_API

Ce package dispose d'un grand nombre de fonctions et procédures qui vous permettront de trouver des informations sur les utilisateurs.

Par exemple vous utiliserez :

Code sql : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
-- Pour trouver l'id de l'utilisateur 
declare 
p_user_name varchar2(30):='HELYOS'; 
p_user_id number:=portal.wwsec_api.id(upper(p_user_name)); 
begin 
htp.prn('L''id de l''utilisateur '||p_user_name||' est '||p_user_id); 
end; 
/ 
  
-- Pour trouver le login de l'utilisateur 
declare 
p_user_id number:='2003'; 
p_user_name varchar2(30):=portal.wwsec_api.user_name(p_user_id); 
begin 
htp.prn('Le login correspondant à l''id '||p_user_id||' est ' || p_user_name ); 
end; 
/

Mis à jour le 30 novembre 2004 helyos

Le package htp est soumis à certaines limitations induites par le mod_plsql. En effet les procédures d'affichage (htp.p, htp.prn, htp.pint) ne supportent pas le fait d'afficher des chaines de caractères de taille supérieure à 32767 caractères). Le résultat de cette limitation est l'affichage du CLOB en question sous forme de caractères incompréhensibles.

Voici une procédure vous permettant de contourner la limitation :

Code sql : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
CREATE OR REPLACE  PROCEDURE write_clob(p_clob CLOB) IS 
    v_buffer   VARCHAR2(32000); 
    v_offset   PLS_INTEGER DEFAULT 1; 
    v_taille   PLS_INTEGER; 
    v_longueur PLS_INTEGER; 
    v_chunk    PLS_INTEGER; 
    v_clob     CLOB := p_clob; 
  BEGIN 
    v_chunk    := dbms_lob.getchunksize(v_clob); 
    v_longueur := dbms_lob.getlength(v_clob); 
    WHILE v_offset < v_longueur LOOP 
      IF v_longueur - (v_offset - 1) > v_chunk THEN 
        v_taille := v_chunk; 
      ELSE 
        v_taille := v_longueur - (v_offset - 1); 
      END IF; 
      v_buffer := NULL; 
      dbms_lob.READ(v_clob, v_taille, v_offset, v_buffer); 
      htp.prn(v_buffer); 
      v_offset := v_offset + v_taille; 
    END LOOP; 
  EXCEPTION 
    WHEN OTHERS THEN 
        htp.print(SQLERRM); 
  END;

Mis à jour le 30 novembre 2004 helyos

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.