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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

probleme d'execution de procedure


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3
    Par défaut probleme d'execution de procedure
    Bonjour, j'essaie d'executer une procedure mais j'obtiens une erreur, j'aurais besoin de votre aide.

    Voici ce que j'ai fait jusque la:

    conn / as sysdba

    CREATE USER aqadmin
    IDENTIFIED BY aqadmin;

    GRANT create session TO aqadmin;
    GRANT create procedure TO aqadmin;
    GRANT create table TO aqadmin;
    GRANT create type TO aqadmin;
    GRANT create public synonym TO aqadmin;
    GRANT aq_administrator_role TO aqadmin IDENTIFIED BY aqadmin;

    GRANT execute ON dbms_aq TO aqadmin;
    GRANT execute ON dbms_aqadm TO aqadmin;

    conn aqadmin/aqadmin

    CREATE OR REPLACE TYPE message_t AS OBJECT (
    id NUMBER,
    rx VARCHAR2(30),
    source VARCHAR2(30));

    CREATE TABLE rx_processed_data (
    id NUMBER,
    rx VARCHAR2(30),
    source NUMBER,
    processed_by VARCHAR2(30),
    dt_processed TIMESTAMP);
    Et voici le point critique... j'essaye de faire ca:

    exec dbms_aqadm.create_queue_table(
    queue_table => 'rx_queue_table',
    queue_payload_type => 'message_t',
    storage_clause => 'PCTFREE 0 PCTUSED 99',
    sort_list => 'ENQ_TIME',
    multiple_consumers => TRUE,
    comment => 'Pharmacy queue table',
    compatible => '10.0',
    secure => FALSE);
    Et j'obtiens ces erreurs la... :

    Error starting at line 1 in command:
    exec dbms_aqadm.create_queue_table(
    Error report:
    ORA-06550: Ligne 1, colonne 37 :
    PLS-00103: Symbole ";" rencontré à la place d'un des symboles suivants :

    ( ) - + case mod new not null others <identificateur>
    <identificateur entre guillemets> <variable bind> table avg
    count current exists max min prior sql stddev sum variance
    execute multiset the both leading trailing forall merge year
    month DAY_ hour minute second timezone_hour timezone_minute
    timezone_region timezone_abbr time timestamp interval date
    <un littéral de chaîne avec spécification de jeu de caractères>
    06550. 00000 - "line %s, column %s:\n%s"
    *Cause: Usually a PL/SQL compilation error.
    *Action:

    Error starting at line 2 in command:
    queue_table => 'rx_queue_table',
    Error report:
    Unknown Command

    Error starting at line 3 in command:
    queue_payload_type => 'message_t',
    Error report:
    Unknown Command

    Error starting at line 4 in command:
    storage_clause => 'PCTFREE 0 PCTUSED 99',
    Error report:
    Unknown Command

    Error starting at line 5 in command:
    sort_list => 'ENQ_TIME',
    Error report:
    Unknown Command

    Error starting at line 6 in command:
    multiple_consumers => TRUE,
    Error report:
    Unknown Command

    Error starting at line 7 in command:
    comment => 'Pharmacy queue table',
    compatible => '10.0',
    secure => FALSE)
    Error report:
    SQL Error: ORA-00969: mot-clé ON absent
    00969. 00000 - "missing ON keyword"
    *Cause:
    *Action:
    Petite precision, les 2 "GRANT execute ..." ont été réalisés par l'administrateur de la base de donnée car je n'ai pas les droits (ni en tant que SYS, ni en tant que aqadmin).
    A prioris ca avait marché, pourtant quand on verifie les droits de aqadmin, ces 2 privileges n'apparaissent pas. J'obtiens ca:

    GRANTEE PRIVILEGE ADMIN_OPTION
    ------------------------------ --------------------
    AQADMIN CREATE PROCEDURE NO
    AQADMIN CREATE TYPE NO
    AQADMIN CREATE SESSION NO
    AQADMIN UNLIMITED TABLESPACE NO
    AQADMIN CREATE PUBLIC SYNONYM NO
    AQADMIN CREATE TABLE NO
    AQADMIN EXECUTE ANY LIBRARY NO
    Voila donc je ne sais pas si c'est ma requete qui n'est pas bonne ou si c'est toujours lié à un probleme de droits, mais si quelqu'un avait une solution à me proposer, ca m'aiderait beaucoup !

    PS: Je travail sous SQL Developper 1.2.1 avec une base Oracle 10.2

    Merci

  2. #2
    Membre expérimenté Avatar de DAB.cz
    Inscrit en
    Octobre 2006
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 221
    Par défaut
    C'est clair:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    begin
     dbms_aqadm.create_queue_table(
       queue_table => 'rx_queue_table',
       queue_payload_type => 'message_t',
       storage_clause => 'PCTFREE 0 PCTUSED 99',
       sort_list => 'ENQ_TIME',
       multiple_consumers => TRUE,
       comment => 'Pharmacy queue table',
       compatible => '10.0',
       secure => FALSE);
    end;
    exec n'est que pour un ordre sur une ligne.

    DAB

  3. #3
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Il faut écrire l'appel sur une seule ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    exec dbms_aqadm.create_queue_table(queue_table => 'rx_queue_table',queue_payload_type => 'message_t',storage_clause => 'PCTFREE 0 PCTUSED 99',sort_list => 'ENQ_TIME',multiple_consumers => TRUE,comment => 'Pharmacy queue table',compatible => '10.0',secure => FALSE);

  4. #4
    Futur Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3
    Par défaut
    Merci à vous, ca m'enleve deja pas mal d'erreurs

    mais bon, j'ai toujours le meme probleme qui revient:

    Error starting at line 1 in command:
    exec dbms_aqadm.create_queue_table(queue_table => 'rx_queue_table',queue_payload_type => 'message_t',storage_clause => 'PCTFREE 0 PCTUSED 99',sort_list => 'ENQ_TIME',multiple_consumers => TRUE,comment => 'Pharmacy queue table',compatible => '10.0',secure => FALSE);
    Error report:
    ORA-06550: Ligne 1, colonne 7 :
    PLS-00201: l'identificateur 'DBMS_AQADM' doit être déclaré
    ORA-06550: Ligne 1, colonne 7 :
    PL/SQL: Statement ignored
    06550. 00000 - "line %s, column %s:\n%s"
    *Cause: Usually a PL/SQL compilation error.
    *Action:
    D'apres mes recherches, cette erreur voudrait dire que aqadmin (l'utilisateur avec lequel je suis connecté) n'a pas le droit d'acceder à ce package, pourtant l'administrateur m'a donné l'accès en faisant un "GRANT execute ON dbms_aqadm TO aqadmin;" donc aqadmin est censé avoir les droits.

    Du coup je pige pas trop... Quelqu'un a une idée ?!


    EDIT: c'est bon, c'etait dut à une erreur en amont... merci pour votre aide

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2
    Par défaut
    J'ai eu un problème plus ou moins similaire, je l'ai résolu en me connectant en tant que SYS sur ma DB et j'ai ensuite octroyé le privilège EXECUTE sur ce(s) package(s) à mon utilisateur.

    En bref:

    CONNECT SYS/<password>;

    => Pour l'administration de la queue :
    GRANT EXECUTE ON DBMS_AQADM TO <myuser>;

    => Pour l'utilisation de la queue (enqueue, dequeue, ...) :
    GRANT EXECUTE ON DBMS_AQ TO <myuser>;

    DISCONNECT;

    Puis tu te reconnectes sur ton user. Cela devrait en principes fonctionner.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme d'execution d'une requete avec un Count
    Par PrinceMaster77 dans le forum ASP
    Réponses: 4
    Dernier message: 23/06/2004, 10h33
  2. [Process] Probleme d'execution d'un prog c dans un prog java
    Par Elmilouse dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 08/06/2004, 14h26
  3. [Debutant][SQL] Execution de procedures stockées
    Par Yannos94 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/06/2004, 18h09
  4. Problème d'exécution
    Par Smaugg dans le forum Linux
    Réponses: 22
    Dernier message: 26/04/2004, 09h34
  5. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo