EF使用ORACLE存储过程,c# – 使用EF失败调用oracle存储过程

博客内容涉及尝试通过Entity Framework调用一个Oracle存储过程,该过程接受两个字符串和一个日期参数,并返回一个游标。然而,调用过程中遇到了一个PL/SQL错误,提示参数类型不匹配。问题可能出在输入参数的传递方式或者存储过程的定义上。
摘要由CSDN通过智能技术生成

我有一个oracle存储过程,它在输入参数中包含2个字符串和一个日期,并将ref光标作为输出:

CREATE OR REPLACE PROCEDURE SCHEMA.MYPROSTO (

pPl IN VARCHAR2, -- Comma (;) separated

pTy IN VARCHAR2,-- Comma (;) separated

pDate IN mytable.mydate%TYPE,

pCursor OUT sys_refcursor)

IS

.....

sSQL VARCHAR2 (3000);

BEGIN

-- making SQL Order

sSQL := 'SELECT TO_CHAR (v.date_c........

......

OPEN pCursor FOR sSQL;

END MYPROSTO;

输出游标返回一组3个字符串单元格行.

我在我的实体框架模型中导入了这个存储过程,在.config文件中:

函数import wizzard创建了一个结果对象并生成了一个访问函数:

public virtual ObjectResult MYPROSTO (string pPL, string pTY, Nullable pDATE)

{

var pPLParameter = pPL!= null ?

new ObjectParameter("PPL", pPL) :

new ObjectParameter("PPL", typeof(string));

var pTYParameter = pTY!= null ?

new ObjectParameter("PTY", pTY) :

new ObjectParameter("PTY", typeof(string));

var pDATEParameter = pDATE.HasValue ?

new ObjectParameter("PDATE", pDATE) :

new ObjectParameter("PDATE", typeof(System.DateTime));

return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("MYPROSTO", pPLParameter, pTYParameter, pDATEParameter);

}

但是,对此函数的调用会在最后一行引发异常(System.Data.Entity.Core.EntityCommandExecutionException):

ORA-06550: Ligne 1, colonne 8 : PLS-00306: wrong number or types of arguments in call to 'MYPROSTO'

ORA-06550: Ligne 1, colonne 8 : PL/SQL: Statement ignored

我不明白为什么会失败

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值