0
votes

Procédure conditionnelle Oracle PL / SQL

Je veux créer une procédure avec la condition suivante xxx pré>

si la condition renvoie NULL, il doit afficher un message d'erreur, puis une erreur. Pour le message d'erreur, j'utilise dbms_output.put_line et pour erreur j'utilise une exception, alors quelqu'un peut aussi que quelqu'un puisse m'aider à sortir de ces p>

J'essaye ces P>

 create or replace procedure validate_terminate
declare
l_yes out varchar2 (1);
null_found exception;
is
begin
   select 'Y'
     into l_yes
     from dual
    where exists
             (select 'Y'
                from pa_expenditure_items_all paei, pa_expenditures_all pae
               where     paei.expenditure_id = pae.expenditure_id
                     and pae.incurred_by_person_id =&person_id
                     and paei.cost_distributed_flag = 'N');

   if l_yes is null
   then
      dbms_output_put_line ('Condition is not met'); 
   raise null_found;
   end if;
   exception 
   when null_found then 
     dbms_output_put_line('CANNOT PROCESS TERMINATE');
end;


1 commentaires

Les procédures ne peuvent pas inviter un utilisateur à une entrée lorsqu'ils exécutent. Si vous voulez que cela fonctionne pour un personne_id , vous déclarez normalement un paramètre et laissez l'appelant de passer en valeur. Est-ce ce que vous voulez faire? Ou voulez-vous faire un bloc PL / SQL anonyme et avoir l'outil client ( sql * plus ou quelque chose d'autre) vous invite à la valeur lorsque le bloc est soumis?


3 Réponses :


0
votes

Lors de la déclaration d'une procédure, utilisez est au lieu de déclarer - n'utilisez pas les deux.

Vous n'avez pas besoin de vérifier si l_yes est NULL - Si votre sélection retourne 0 rangs, il augmentera automatiquement un no_data_found exception. Juste attraper ça.

Vous n'avez pas besoin de sélectionner une seconde fois (à partir de Dual). Le premier Select fonctionne bien.

Ne mettez pas out après l_yes dans la déclaration. C'est juste l_yes variar2 (1); .

C'est dbms_output.put_line .

Utiliser la variable de liaison : PERSON_ID au lieu de la variable de substitution et de la personne_id xxx


1 commentaires

HI Kfinity iam Obtenir ces erreurs maintenant Erreur (11,53): Pls-00049: Variable Bad Bind 'Person_id'Error (11,53): Pls-00049: mauvaise variable de liaison' person_id '



0
votes

Votre manipulation de la déclaration et des exceptions variables est inappropriée.

Essayez ci-dessous Code: xxx

acclamations !!


0 commentaires

0
votes

PL / SQL n'est pas un langage de programmation interactif. Il s'agit d'un outil de matérialisation SQL et de code associé à appeler à partir d'autres clients. Ce sont ces clients qui gèrent les entrées de l'utilisateur et d'autres choses de l'interface utilisateur.

de sorte que la manière idiomatique d'écrire votre procédure serait de transmettre la personne_id comme paramètre .... p>

exec validate_terminate(&person_id)


0 commentaires