【发布时间】:2013-01-10 08:56:05
【问题描述】:
我已经解决了所有类似的问题,但没有成功。
在 Visual Studio 2010 中,我正在创建一个调用 Oracle 存储过程的 MVC Web 应用程序。我什至无法调用一个非常简单的存储过程。这是简单的存储过程:
CREATE OR REPLACE PROCEDURE VANCE_TEST ( PARTNERS OUT sys_refcursor ) AS
BEGIN
OPEN PARTNERS FOR SELECT COMPANY_NAME, SUN FROM PARTNER WHERE MARKET_IDX = 16;
END;
/
两列都是 Varchar2 类型。当我从 SQL*Plus 调用该过程时,使用以下代码可以正常工作:
var rc refcursor
execute VANCE_TEST( :rc );
print rc;
在我的 web.config 文件中,我有以下规范来定义存储过程的光标:
<oracle.dataaccess.client>
<settings>
<add name="PARTNER.VANCE_TEST.RefCursor.PARTNERS" value="implicitRefCursor bindinfo='mode=Output'" />
<add name="PARTNER.VANCE_TEST.RefCursorMetaData.PARTNERS.Column.0" value="implicitRefCursor metadata='ColumnName=COMPANY_NAME;BaseSchemaName=PARTNER;BaseTableName=PARTNER;NativeDataType=Varchar2;ProviderType=Varchar2;ProviderDBType=String;DataType=System.String;ColumnSize=100;AllowDBNull=true'" />
<add name="PARTNER.VANCE_TEST.RefCursorMetaData.PARTNERS.Column.1" value="implicitRefCursor metadata='ColumnName=SUN;BaseSchemaName=PARTNER;BaseTableName=PARTNER;NativeDataType=Varchar2;ProviderType=Varchar2;ProviderDBType=String;DataType=System.String;ColumnSize=10;AllowDBNull=true'" />
</settings>
</oracle.dataaccess.client>
当我执行添加函数导入时,这工作得很好,并且 VS 能够为返回的数据创建一个复杂类型 VANCE_TEST_Result。 PARTNER 是架构名称,添加函数导入无法看到返回的列,直到我在 VANCE_TEST 之前添加它。
在我的程序中,使用 Models.Entities 对 PARTNER 表进行 Linq 查询没有问题,我有以下代码:
using (Models.Entities db = new Models.Entities())
{
IEnumerable<Models.VANCE_TEST_Result> results = db.VANCE_TEST();
当我执行它时,我在 db.VANCE_TEST() 中得到一个异常:
public ObjectResult<VANCE_TEST_Result> VANCE_TEST()
{
return base.ExecuteFunction<VANCE_TEST_Result>("VANCE_TEST");
}
ExecuteFunction(我无法追踪)引发 Oracle.DataAccess.Client.OracleException,其中包含来自 Oracle 的多行错误:
ORA-06550: line 1, column 17:
PLS-00302: component 'VANCE_TEST' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
关于这里发生了什么的任何提示?或者我如何才能获得正在发送的实际 SQL 代码?我尝试从 Stackoverflow 的另一篇文章中学习,并在他们解决问题后尽可能多地这样做:
Oracle stored proc call returning exception ORA-06550 with PLS-00103
提前感谢您对此提供的任何启示。
【问题讨论】:
标签: oracle stored-procedures entity-framework-4