【发布时间】:2015-05-06 04:18:35
【问题描述】:
我正在从 C# 执行一个匿名 PL/SQL 块,但我收到如下错误:
ORA-06550 第 10 行,第 41 列:PLS-00103:遇到符号“,” 预期以下情况之一时:
我的代码:
OracleDB AppConn = new OracleDB();
OracleDataReader eligiblereader = null;
string id = "2304502001101";
long provider = 667;
long policy = 150;
DateTime to = Convert.ToDateTime("2015/05/06");
using (OracleConnection con = AppConn.Connection)
{
OracleCommand cmd = con.CreateCommand();
cmd.Connection = con;
cmd.CommandText = @"declare
p_id VARCHAR2;
p_policy_id NUMBER;
p_provider_id NUMBER;
p_date DATE;
p_tob tob_type;
begin
pbm_pkg.get_member_tob(p_id,p_policy_id,p_provider_id,p_date,p_tob);
open :refcur for select tob_type.benefit_id from dual;
end;";
OracleParameter p = cmd.Parameters.Add(
"rs", OracleDbType.RefCursor,
DBNull.Value,
ParameterDirection.Output);
OracleParameter p_id = new OracleParameter();
p_id.OracleDbType = OracleDbType.Varchar2;
p_id.Direction = ParameterDirection.Input;
p_id.Value = id;
OracleParameter p_policy_id = new OracleParameter();
p_policy_id.OracleDbType = OracleDbType.Int64;
p_policy_id.Direction = ParameterDirection.Input;
p_policy_id.Value = policy;
OracleParameter p_provider_id = new OracleParameter();
p_provider_id.OracleDbType = OracleDbType.Int64;
p_provider_id.Direction = ParameterDirection.Input;
p_provider_id.Value = provider;
OracleParameter p_date = new OracleParameter();
p_date.OracleDbType = OracleDbType.Date;
p_date.Direction = ParameterDirection.Input;
p_date.Value = to;
cmd.Parameters.Add(p_id);
cmd.Parameters.Add(p_policy_id);
cmd.Parameters.Add(p_provider_id);
cmd.Parameters.Add(p_date);
try
{
con.Open();
cmd.ExecuteNonQuery();
eligiblereader = ((OracleRefCursor)cmd.Parameters[4].Value).GetDataReader();
while (eligiblereader.Read())
{
string id = eligiblereader.GetValue(0).ToString();
}
}
catch (Exception ex)
{
}
finally
{
con.Close();
}
return View();
}
命令执行'cmd.ExecuteNonQuery();'时出现错误
我想我在匿名块中遗漏了一些东西。
【问题讨论】:
-
我删除了 cmd.CommandType = CommandType.StoredProcedure;现在我得到 ora-01006 绑定变量不存在
-
@downvoters 你能说说这个问题他有什么问题吗?
-
我认为无论谁投反对票,都不在乎发表评论。太胆小了,不敢匿名。无论如何,请看我更新的答案。
标签: c# oracle plsql sys-refcursor bind-variables