调用Orcale存储过程出错

houlinghouling 2009-07-09 04:17:44
存储过程:
create or replace procedure CalculateTax
(p_SearchDate in varchar2, --计算的月份
P_Companyid in number, --计算的公司编号
p_cur out cur_Query.p_cursor --查询结果
)
is
begin
……
end CalculateTax;

调用方法:
OracleParameter[] parameters = {
new OracleParameter("p_SearchDate", OracleType.VarChar,10),
new OracleParameter("P_Companyid", OracleType.Number,10),
new OracleParameter("p_cur", OracleType.Cursor)
};
parameters[0].Value = iMonth;
parameters[1].Value = CompanyID;

OracleConnection conn = new OracleConnection(ConnStr);
dsReturn = OracleDataAccess.ExecuteDataset(conn, CommandType.StoredProcedure, "CalculateTax", parameters);

iMonth = '200907',CompanyID=2743

错误提示:
ORA-06550: 第 1 行, 第 7 列:
PLS-00306: 调用 'CALCULATETAX' 时参数个数或类型错误
ORA-06550: 第 1 行, 第 7 列:

请问错在哪里了?
...全文
59 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qinhl99 2009-07-09
  • 打赏
  • 举报
回复
1、检查下CompanyID是否=2743,还是null;
2、Oracle不能直接返回记录集,需要通过一个 out 参数达到目的。在OracleType中有一个OracleType.Cursor 类型与之对应。 Oracle中的存储过程大部分都定义成Funcion, 有返回值。 在定义Command的参数集合时,需要增加一个"ReturnValue"的参数。
ljhcy99 2009-07-09
  • 打赏
  • 举报
回复
p_cur out cur_Query.p_cursor 这个有问题。
poiuy1363 2009-07-09
  • 打赏
  • 举报
回复
new OracleParameter("p_cur", OracleType.Cursor)
这个加上输出方向ParameterDirection --->>>Output
V68V6 2009-07-09
  • 打赏
  • 举报
回复
1、检查插入数据库的参数类型定义是不是合法
2、检查插入数据库表格的字段和你程序定义的参数字段是不是一一对应

在此基础上再排查别的,比如楼上说的。
我不懂电脑 2009-07-09
  • 打赏
  • 举报
回复
p_cur out cur_Query.p_cursor
这个可能不支持
allen_sz 2009-07-09
  • 打赏
  • 举报
回复
你参数的ParameterDirection没有设置,是输入参数还是输出参数?加上看看

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧