EF 调用 oracle 存储过程失败,有人晓得为什么吗
EF 调用 oracle 存储过程失败,有人知道为什么吗?如果存储过程没有返回游标,就能成功吗,如果返回游标,就是
EF 调用 oracle 存储过程失败,有人知道为什么吗?
如果存储过程没有返回游标,就能成功吗,如果返回游标,就是失败,有人知道为什么吗?谢谢
public ObjectResult<T_ID> USP_TEST(global::System.String mTABLE)
{
ObjectParameter mTABLEParameter;
if (mTABLE != null)
{
mTABLEParameter = new ObjectParameter("MTABLE", mTABLE);
}
else
{
mTABLEParameter = new ObjectParameter("MTABLE", typeof(global::System.String));
}
return base.ExecuteFunction<T_ID>("USP_TEST", mTABLEParameter);
}
存储过程 也很简单
create or replace procedure USP_TEST(mTable in varchar2,cur_out Out sys_refcursor
) is
begin
open cur_out for select * from t_id;
end USP_TEST;
[解决办法]我做出来了,你要在WEB.CONFIG里面进行配置,与SQL SERVER有很大的区别,只要是返回游标的都必须配置
例子:
<oracle.dataaccess.client>
<settings>
<add name="HR.UPDATE_AND_RETURN_SALARY.RefCursor.NEW_SALARY" value="implicitRefCursor bindinfo='mode=Output'" />
<add name="HR.UPDATE_AND_RETURN_SALARY.RefCursorMetaData.NEW_SALARY.Column.0" value="implicitRefCursor metadata='ColumnName=FIRST_NAME;BaseColumnName=FIRST_NAME;BaseSchemaName=HR;BaseTableName=EMPLOYEES;NATIVEDATATYPE=Varchar2;ProviderType=Varchar2'" />
<add name="HR.UPDATE_AND_RETURN_SALARY.RefCursorMetaData.NEW_SALARY.Column.1" value="implicitRefCursor metadata='ColumnName=SALARY;NATIVEDATATYPE=Number;ProviderType=Int32'" />
</settings>
</oracle.dataaccess.client>
其他的照着配置,但类型一定要对应正确,不然就要报错,很麻烦
[解决办法]http://download.oracle.com/oll/obe/EntityFrameworkOBE/EntityFrameworkOBE.htm
上面的這個例子更詳細