So zeigen Sie den Typ einer Variablen in PL/SQL?
Gibt es eine Funktion in PL/SQL zu zeigen, eine variable, die genaue Art, wie die DUMP-Funktion in SQL?
Ich habe versucht, die folgenden
DECLARE
l_variable INTEGER := 1;
BEGIN
DBMS_OUTPUT.PUT_LINE (DUMP (l_variable));
END;
Aber es gibt die folgende Fehlermeldung:
PLS-00204: Funktion oder pseudo-Spalte "DUMP" kann verwendet werden innerhalb einer SQL -
Anweisung nur
- Warum wollen Sie dies tun? DUMP() ist ein Diagnose-tool, das hauptsächlich für die Untersuchung der Inhalte der Tabellenspalten. Warum müssen Sie befragen die Datentypen von PL/SQL-Variablen? (Ich habe ein paar Hypothesen, aber ich denke, die Frage würde sich verbessern, um mehr details in Bezug auf den Anwendungsfall.)
- Zunächst ich wollte nur, um herauszufinden, die genaue Art der autodeclared loop-variable in eine numerische FOR-SCHLEIFE. Dann begann ich Frage mich, wie kann ich programmatisch die tatsächliche Art der variable, wie in jeder modernen Programmiersprache wie C#, java oder python, und ich habe nicht gefunden, einen Weg.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie erstellen, die diese Funktion mit PL/Scope. Aber es funktioniert nicht mit anonymen Blöcken, und Sie müssen den Verweis auf die variable als string.
Beispiel:
NO_DATA_FOUND
, und wenn es zwei Variablen mit dem gleichen Namen in das Objekt, das Sie erhaltenORA-01422: exact fetch returns more than requested number of rows
.als Sie sollten beachten, DUMP ist eine überladene Funktion. es hat 3 überladungen.
So können Sie simulieren, die gleiche Sache in Ihrem code.
der obige code funktioniert möglicherweise nicht richtig, aber sollte Ihnen die Idee, wie man das problem.
Ich hoffe, dass dies Ihre Anforderungen erfüllen.
Hinweis; Sie können diese Funktionen in ein Package und verwenden Sie entsprechend.
NUMBER
und einINTEGER
. Wenn Sie eine Funktion erstellen, die für jede Art in einem Paket wird es kompilieren, aber beim Aufruf erhalten Sie die FehlermeldungPLS-00307: too many declarations of 'MYDUMP' match this call
. Der wirklich knifflige Teil dieser Frage ist die Unterscheidung zwischen Subtypen, da PL/SQL scheint nicht zu wissen, den Unterschied in jedem Kontext.