问题
So I'm trying to call an Oracle stored procedure from my C# .NET application. Most online references I can find suggest "using System.Data.OracleClient;", but .Net 3.5 doesn't recognize that namespace so I'm using "Oracle.DataAccess.Client" instead.
Here's some paraphrasing of my code below, with a previously setup and tested OracleConnection called 'myConn' already filled with parameter ':arg_myArg' (it's a number, if that matters):
command.Connection = myConn;
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "exec mySchema.myProc(:arg_myArg)"
command.ExecuteNonQuery();
The trick is that the procedure returns nothing by design, it simply populates a different table which I pull from. However, when I try to run the code above, I get a 'OracleException' on the final line and gives this error:
ORA-06550: line 1, column 13:
PLS-00103: Encountered the symbol "MYSCHEMA" when expecting one of the following:
:= . ( @ % ;
The symbol ":=" was substituted for "MYSCHEMA" to continue.
Removing the "exec" from the command gives this error instead:
ORA-06550: line 1, column 8:
PLS-00801: internal error [22503]
ORA-06550: line 1, column 8:
PL/SQL: Statement ignored
Any ideas? I'd be happy to clarify anything
This is my first time posting on stackoverflow.com and my last week at this job, so I appreciate your understanding and relative haste with figuring this out
回答1:
I think you need to something like this
command.Connection = myConn;
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "mySchema.myProc"; // the proc name
command.Parameters.Add(/* TODO: Add parameter here */);
command.ExecuteNonQuery();
来源:https://stackoverflow.com/questions/5378683/calling-an-oracle-stored-procedure-in-c-sharp-using-oracle-dataaccess-with-a