Announcement

Collapse
No announcement yet.

Etwas sehr merkwürdiges...

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Etwas sehr merkwürdiges...

    Hallo zusammen,

    ich habe erstellt so einen einfachen Skript:<br>
    =============================<br>
    undefine targetowner<br>
    define targetowner = 'SCOTT'<br>
    <br>
    select * from &targetowner.emp;<br>
    =============================<br>
    Beim Ausführen von diesem Skript wird aber eine Fehlermeldung ausgegeben:

    SQL> @test_targetowner;<br>
    alt 1: select * from &targetowner.emp<br>
    neu 1: select * from SCOTTemp<br>
    select * from SCOTTemp<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs p;&nbsp;&nbsp;&nbsp;&nbsp;*<br>
    FEHLER in Zeile 1:<br>
    ORA-00942: Tabelle oder View nicht vorhanden<br>
    <br>
    Den Punkt zwischen &targetowner und emp hat er einfach gefressen.
    Wenn ich anstelle von einem Punkt zwei Pünktchen schreiben würde (select * from &targetowner..emp, wird das ganze problemlos ausgeführt.
    Ist das normal, oder doch ein bisschen merkwürdig?

    Gruß

    Leonid Pavlov

  • #2
    Hallo Leonid,

    an dem Punkt erkennt Oracle das Ende der Variable, wenn danach gleich ein Text weitergeht und kein Leerzeichen kommt.

    Gruß
    Usch

    Comment


    • #3
      Hallo Uschi,

      danke dir.
      Aber wenn ich so was eingebe:
      <br>
      define targetowner = 'SCOTT.'<br>
      <br>
      select * from &targetowner.emp;<br>
      <br>
      Dann erkennt Oracle an dem Punkt zwischen &targetowner und emp nicht das Ende der Variable.

      Gruß

      Leonid Pavlo

      Comment


      • #4
        Hallo Leonid,

        das sollte es aber. Bei Deinem 2. Beispiel muß das ganze so ersetzt werden: select * from SCOTT.emp

        Dabei stammt der Punkt aus Deiner Variablen und das emp vom eingegebenen Statement. Normalerweise zeigt Dir Oracle das in der Form an:

        SQL> select * from &targetowner.emp;
        alt 1: select * from &targetowner.emp
        neu 1: select * from SCOTT.emp

        da kannst Du dann auch kontrollieren, was wirklich ausgeführt wird.

        Gruß
        Usch

        Comment

        Working...
        X