Reputation: 43
I'm trying to execute anonymous PL/SQL in C#. This is my code:
var requete = " DECLARE \n";
requete = requete + "type cursor_out is ref cursor; \n";
requete = requete + " cur cursor_out; \n";
requete = requete + "person_row XXX%rowtype; \n";
requete = requete + "procedure Select_Proc(result out cursor_out) is \n";
requete = requete + " begin \n";
requete = requete + "open result for select * from XXX \n";
requete = requete + "end; \n";
requete = requete + "begin \n";
requete = requete + "Select_Proc(cur); \n";
requete = requete + "loop \n";
requete = requete + "fetch cur into person_row; \n";
requete = requete + "exit when cur%notfound; \n";
requete = requete + "end loop; \n";
requete = requete + "close cur; \n";
requete = requete + "end;";
var oc = new OracleConnection(connectionString);
oc.Open();
var cmd = new OracleCommand
{
Connection = oc,
CommandText = requete,
CommandType = CommandType.StoredProcedure
};
OracleDataReader odr = cmd.ExecuteReader();
When I run the some PLSQL script in SqlPlus it runs (I added "/"), but in C# I got some error like this one:
PLS-00103: Encountered the symbol ";" when expecting one of the following:
Upvotes: 1
Views: 209
Reputation: 33273
Remove the ;
after the final end
in your PL/SQL code.
The ;
(and the /
) are used by SQL*PLUS to seperate commands. When using ODBC you send in one command at a time, so the ;
isn't needed, and even causes an exception.
Upvotes: 2