DB2: So beheben Sie den Fehler „SQL0206N „INVOICEDATE“ ist im Kontext, in dem es verwendet wird, ungültig. SQLSTATE=42703“

DB2: So beheben Sie den Fehler „SQL0206N „INVOICEDATE“ ist im Kontext, in dem es verwendet wird, ungültig. SQLSTATE=42703“

Unter Linux habe ich mich mit DB2 verbunden und versuche, die älteste Rechnung abzurufen. Bei Verwendung der folgenden Abfrage wird ein Fehler angezeigtSQL0206N "INVOICEDATE" is not valid in the context where it is used.SQLSTATE=42703

db2 "select min(INVOICEDATE) from RHA2";

Wie kann ich diesen Fehler beheben? Kann mir jemand helfen?

Dank im Voraus.

Antwort1

$ db2 "? sql206"

SQL0206N "" ist im Kontext, in dem es verwendet wird, ungültig.

Erläuterung:

Dieser Fehler kann in folgenden Fällen auftreten:

  • Bei einer INSERT- oder UPDATE-Anweisung ist die angegebene Spalte keine Spalte der Tabelle oder Ansicht, die als Objekt des
    Einfügens oder Aktualisierens angegeben wurde.

  • Bei einer SELECT- oder DELETE-Anweisung handelt es sich bei der angegebenen Spalte nicht um eine Spalte einer der Tabellen oder Ansichten, die in einer FROM-Klausel in
    der Anweisung identifiziert sind.

  • Bei einer Zuweisungsanweisung lässt sich der Referenzname nicht in den Namen einer Spalte oder Variablen auflösen.

  • Beim Verweisen auf ein Feld in einer Zeilentypvariablen lässt sich der Verweisname nicht in den Namen eines beliebigen Felds im Zeilentyp auflösen.

  • Bei einer ORDER BY-Klausel handelt es sich bei der angegebenen Spalte um einen korrelierten Spaltenverweis in einer Unterauswahl, was nicht zulässig ist.

  • Bei einer SELECT-Anweisung in einem parametrisierten Cursorkonstruktor stimmt der Verweis auf "" nicht mit einer Spalte oder Variable im Gültigkeitsbereich überein. Lokale Variablen und Routine-SQL-Parameter werden für parametrisierte Cursor nicht als im Gültigkeitsbereich befindlich betrachtet.

  • Für eine eigenständige zusammengesetzte SQL-Anweisung (kompiliert):

    • Der Verweis "" lässt sich nicht in den Namen einer Spalte oder lokalen Variable auflösen, die sich im Gültigkeitsbereich befindet.

    • Der in der SIGNAL-Anweisung angegebene Bedingungsname "" wurde nicht deklariert.

    • Beim Verweisen auf ein Feld in einer Zeilentypvariablen lässt sich der Verweisname nicht in den Namen eines beliebigen Felds im Zeilentyp auflösen.

  • Für eine CREATE TRIGGER-, CREATE METHOD-, CREATE FUNCTION- oder CREATE PROCEDURE-Anweisung:

    • Die Referenz "" lässt sich nicht in den Namen einer Spalte, lokalen Variable oder Übergangsvariable auflösen.

    • Die Referenz "" wird in den Namen einer lokalen Variable aufgelöst, die im aktuellen Bereich nicht verfügbar ist.

    • Der in der SIGNAL-Anweisung angegebene Bedingungsname "" wurde nicht deklariert.

    • Beim Verweisen auf ein Feld in einer Zeilentypvariablen lässt sich der Verweisname nicht in den Namen eines beliebigen Felds im Zeilentyp auflösen.

  • Für eine CREATE TRIGGER-Anweisung:

    • Es wird auf eine Spalte der Subjekttabelle verwiesen, ohne dass ein ALTER oder NEUER Korrelationsname verwendet wird.

    • Die linke Seite einer Zuweisung in der Anweisung „SET transition-variable“ in der ausgelösten Aktion gibt eine alte Übergangsvariable an, wo nur eine neue Übergangsvariable unterstützt wird.

  • Für eine CREATE FUNCTION-Anweisung mit einer PREDICATES-Klausel:

    • Die RETURN-Anweisung der SQL-Funktion verweist auf eine Variable, die kein Parameter oder eine andere Variable ist, die im Gültigkeitsbereich der RETURN-Anweisung liegt.

    • Die FILTER USING-Klausel verweist auf eine Variable, die kein Parametername oder Ausdrucksname in der WHEN-Klausel ist.

    • Das Suchziel in einer Indexausnutzungsregel stimmt nicht mit einem Parameternamen der Funktion überein, die erstellt wird.

    • Ein Suchargument in einer Indexausnutzungsregel stimmt weder mit einem Ausdrucksnamen in der EXPRESSION AS-Klausel noch mit einem Parameternamen der zu erstellenden Funktion überein.

  • Bei einer CREATE INDEX EXTENSION-Anweisung verweist die RANGE THROUGH-Klausel oder die FILTER USING-Klausel auf eine Variable, die kein Parametername ist, der in der Klausel verwendet werden kann.

  • Bei einem Verweis auf eine parametrisierte Cursorvariable
    ist eine lokale SQL-Variable oder ein SQL-Parameter, auf den in der Select-Anweisung verwiesen wird, die bei der Definition einer parametrisierten Cursorvariable verwendet wird, im aktuellen Bereich nicht verfügbar.

  • Bei einer Periodenreferenz ist die angegebene Periode in keiner der Quell- oder Zieltabellen oder -ansichten der Anweisung enthalten.

Die Anweisung kann nicht verarbeitet werden.

Benutzeraktion:

Überprüfen Sie, ob die Namen in der SQL-Anweisung richtig angegeben sind. Stellen Sie bei einer SELECT-Anweisung sicher, dass alle erforderlichen Tabellen in der FROM-Klausel benannt sind. Stellen Sie bei einer Unterauswahl in einer ORDER BY-Klausel sicher, dass keine korrelierten Spaltenverweise vorhanden sind. Wenn für eine Tabelle ein Korrelationsname verwendet wird, stellen Sie sicher, dass nachfolgende Verweise den Korrelationsnamen und nicht den Tabellennamen verwenden.

Stellen Sie bei einer CREATE TRIGGER-Anweisung sicher, dass auf der linken Seite der Zuweisungen in der SET-Übergangsvariablen-Anweisung nur neue Übergangsvariablen angegeben werden und dass für alle Verweise auf Spalten der Subjekttabelle ein Korrelationsname angegeben ist.

Überprüfen Sie bei einer eigenständigen Compound-SQL-Anweisung, CREATE FUNCTION, CREATE PROCEDURE oder CREATE TRIGGER-Anweisung, ob die Spalten oder Variablen im Bereich der aktuellen Compound-SQL-Anweisung verfügbar sind.

Bei einem in XQuery eingebetteten Fullselect mithilfe der Funktion db2-fn:sqlquery muss eine Referenz innerhalb des Fullselects eines der folgenden sein: eine Spalte im Kontext des Fullselects, eine globale Variable oder ein Parameter, der mithilfe eines zusätzlichen Arguments der Funktion db2-fn:sqlquery an den neuen SQL-Kontext übergeben wird.

SQL-Code: -206

SQL-Status: 42703

verwandte Informationen