6
votes

SQL * Plus comment accepter la variable de texte à l'invite?

im très débutant dans psql et j'ai une question.

Voici le code: p> xxx pré>

question est très simple: comment puis-je passer du texte à ma variable ? Si j'entraîne un numéro, il fonctionne correctement et je peux lire dans le journal mon numéro, mais si je passe un texte comme "myText" au lieu d'un numéro, j'ai eu une erreur: p>

    old:BEGIN


     dbms_output.put_line('My input variable is: '||&myVariable);
     END;


    new:BEGIN

  dbms_output.put_line('My input variable is: '||mytext);
 END;

    Error starting at line 5 in command:
    BEGIN
      dbms_output.put_line('My input variable is: '||&myVariable);
     END;
    Error report:
    ORA-06550: 2 sor, 50 oszlop:
    PLS-00201: identifier 'MYTEXT' must be declared
    ORA-06550: 2 sor, 3 oszlop:
    PL/SQL: Statement ignored
    06550. 00000 -  "line %s, column %s:\n%s"
    *Cause:    Usually a PL/SQL compilation error.
    *Action:


0 commentaires

3 Réponses :


1
votes

Vous n'avez pas de variable myText déclaré nulle part.

dbms_output.put_line('My input variable is: '||mytext); -- here is the error. It should be &myVariable.


1 commentaires

Non, le code est ci-dessus, la valeur d'entrée est "mytext" que j'ai donné!



9
votes

Vous devez spécifier le type de données dans le cadre du Accepter déclaration . Si aucun n'est donné, il suppose un numéro.

Essayez Accepter MyVariable Char Invite 'Valeur d'entrée:'; à la place.


0 commentaires

7
votes

Vous devez mettre en place la variable de substitution du personnage dans des guillemets lorsque vous l'utilisez, s'il s'agit d'une chaîne, sinon Oracle tente d'interpréter la valeur em> comme nom d'objet. Vous pouvez voir que sur la "nouvelle" version (affichée parce que vous avez définir vérifier sur code>) et Sexta13 fais allusion à cela aussi. Donc, vous feriez:

 dbms_output.put_line('My input variable is: &myVariable');


1 commentaires

Vous devriez probablement utiliser deux ampersands: dbms_output.put_line ('&& myvariable'); de cette façon, il ne demandera pas la valeur si elle est déjà définie.