2017-09-05 3 views
0

Ich erhalte folgende Oracle-Fehler, wenn ich mit parametrisierte Abfrage einfügen versuchen:parametrisierte INSERT-Abfrage Fehler

ORA-01036: Unzulässige Variable Name/Nummer

Mein Code ist:

OracleTransaction myTrans; 
using (myTrans = myConnection.BeginTransaction()) 
{ 
    try 
    { 
    OracleCommand cmd = new OracleCommand("INSERT INTO TABLE_NAME(GKEY,FILE_NAME,CONTAINER_NO) VALUES (1,@file_name,@container_no)", myConnection); 
    cmd.Parameters.AddWithValue("@file_name", file_name); 
    cmd.Parameters.AddWithValue("@container_no", container_no); 
    cmd.Transaction = myTrans; 
    cmd.ExecuteNonQuery(); 
    } 
    catch (Exception ex) 
    { 
    myTrans.Rollback(); 
    } 
    finally 
    { 
    myTrans.Commit(); 
    } 
} 

Wenn ich ohne parametrisierte Abfrage verwenden, es ohne Fehler arbeiten, helfen sie mir bitte, diese zu lösen. Dank

EDIT: Ich denke, diese Frage nicht eine doppelte Frage, die Antwort unten arbeitete für mich zur Verfügung gestellt. Hier habe ich das "@" -Zeichen verwendet, das die Hauptursache für den Fehler ist. Bitte ueberlege es Dir nochmal. Danke

+0

@Jerodev Oracle unterstützt keine Bindungsvariablen für Einsatz parametrisierte Abfrage verwenden? – imsome1

Antwort

4

Ich denke, dass das Problem hier mit Parametersyntax verbunden sein kann. Versuchen Sie : zu verwenden, anstatt @

OracleCommand cmd = new OracleCommand("INSERT INTO TABLE_NAME(GKEY,FILE_NAME,CONTAINER_NO) VALUES (1,:file_name,:container_no)", myConnection); 
cmd.Parameters.AddWithValue("file_name", file_name); 
cmd.Parameters.AddWithValue("container_no", container_no); 

Wenn es von einem OracleCommand von CommandType.Text mit benannten Parametern in einer SQL-Anweisung aufgerufen, Sie die Parameternamen mit einem Doppelpunkt (:) vorangestellt werden muss. Jedoch in einer gespeicherten Prozedur, oder wenn sie an einen benannten Parameter an anderer Stelle im Code bezieht (zum Beispiel, wenn OracleParameter Objekte an den Parameter Eigenschaft hinzufügen), nicht voraus nicht den benannten Parameter mit einem Doppelpunkt (:)

https://msdn.microsoft.com/en-us/library/system.data.oracleclient.oraclecommand.parameters(v=vs.110).aspx

+0

Vielen Dank, es hat funktioniert. – imsome1