Verwenden von PL/SQL-Variablen in der OCI Ergebnisse im "ORA-01008: nicht allen Variablen gebunden" Fehler
Den folgenden (sehr künstlich und vereinfacht) Beispiel läuft wunderbar im SQLDeveloper, aber die Ergebnisse in einer ORA-01008-Fehler beim ausführen über OCI.
declare
CURRENT_LINE_ID NUMBER := 120;
TARGETVAR NUMBER;
begin
SELECT 1 INTO TARGETVAR FROM DUAL WHERE 120 = :CURRENT_LINE_ID;
end;
Gibt es eine Möglichkeit, neu zu strukturieren diese so, dass der bind-variable ist zufrieden OCI?
Experimentierte ich mit substitution von Variablen ein wenig (mal wieder funktioniert in SQL-Developer), aber DEFINIEREN zu sein scheinen völlig ungültige OCI.
DEFINE MYSUBST = 120;
DECLARE
TARGETVAR NUMBER;
BEGIN
SELECT 1 INTO TARGETVAR FROM DUAL WHERE 120 = &MYSUBST;
END;
Dies ist in Pro*C, oder welche Sprache?
Einfache C++. Dies ist die erste, die ich gehört habe von Pro*C. Es sieht aus wie es zu machen ist es einfacher zu schreiben SQL in C als PLSQL-OCI-kompatibel, aber... stackoverflow.com/questions/4793705/what-is-pro-c
im ersten Beispiel, warum müssen Sie die Spalte, da Sie definieren die variable bereits in der declare-Abschnitt?
Dies ist ein erfundenes Beispiel, mit dem keine Bedeutung soll darüber hinaus demonstriert, dass die PL/SQL-Variablen funktionieren nicht über OCI. Ich könnte verallgemeinern meine Frage und zwar: ist es möglich, beliebigen (Benutzer-spezifiziert) PL/SQL-Code über OCI?
Einfache C++. Dies ist die erste, die ich gehört habe von Pro*C. Es sieht aus wie es zu machen ist es einfacher zu schreiben SQL in C als PLSQL-OCI-kompatibel, aber... stackoverflow.com/questions/4793705/what-is-pro-c
im ersten Beispiel, warum müssen Sie die Spalte, da Sie definieren die variable bereits in der declare-Abschnitt?
Dies ist ein erfundenes Beispiel, mit dem keine Bedeutung soll darüber hinaus demonstriert, dass die PL/SQL-Variablen funktionieren nicht über OCI. Ich könnte verallgemeinern meine Frage und zwar: ist es möglich, beliebigen (Benutzer-spezifiziert) PL/SQL-Code über OCI?
InformationsquelleAutor Raven | 2013-12-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie
:CURRENT_LINE_ID NUMBER
,OCI
sieht für das binden von Variablen in host-Programm nur. HierC++
. So sollten Sie haben, hatte diese variable deklarieren, die in Ihrem c++ - Programm in eineexec declare section
oder überall dort, wo es sein sollte. Wenn Sie alles inSQL developer
, wenn Sie auftreten, eine:variable
es blind wird der Benutzer aufgefordert, geben Sie den Wert für Sie, so dont mix it up mit der Art, wie Sie es tun und dieoci libraries
Arbeit.In Ihrem Fall schließlich, wenn ein
PL/SQL
verwendet wird und die variable deklariert ist es, Sie immer es ohnecolon
. Wenn Sie möchten, binden Sie es aus der hostprogram, Sie deklarieren es alshost variable
.PRO*C
unterstützt. nicht sicher über c++. pro*c ist nichts anderes als einembedded sql
imC
zur Verfügung gestellt vonoracle
.Ja! Vereinbart, wenn wir die PL/SQL als Skript (oder F5), nachdem Sie die Einstellung der variable.
InformationsquelleAutor Maheswaran Ravisankar
Maheswaran Antwort führte mich zur Suche nach
host variable
, das führte mich zu der Antwort: ich war ein einzelner Doppelpunkt vom Erfolg entfernt.Obwohl nun, es stellt sich heraus, dass ich gehen zu müssen, wickeln alles in eine gespeicherte Prozedur, um tatsächlich die Zeilen zurück.
InformationsquelleAutor Raven