繁体   English   中英

获取匿名PL / SQL的结果

[英]get result of an anonymous PL/SQL

我正在尝试在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代码的最后end之后。

; (和/ )由SQL * PLUS用来分隔命令。 当使用ODBC您在一个命令发送一次,所以; 不需要,甚至会导致异常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM