获取匿名PL/SQL的结果

本文关键字:SQL 结果 PL 获取 | 更新日期: 2023-09-27 17:50:38

我试图在c#中执行匿名PL/SQL。这是我的代码:

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();

当我在SqlPlus中运行一些PLSQL脚本时,它运行(我添加了"/"),但在c#中,我得到了一些错误,如:

PLS-00103:遇到符号";"时,期望以下之一:

获取匿名PL/SQL的结果

删除PL/SQL代码中最后一个end后面的;

SQL*PLUS使用;(和/)来分隔命令。使用ODBC时,每次只发送一个命令,因此不需要;,甚至会导致异常。