1

问题情况选择甲骨文在SSRS存储过程崩溃的Visual Studio 2005 IDE

我有一个声明,像这样一个非常简单的Oracle(11克)存储过程:

CREATE OR REPLACE PROCEDURE pr_myproc(L_CURSOR out SYS_REFCURSOR) 
is 
    BEGIN 
    OPEN L_CURSOR FOR 
     SELECT * FROM MyTable; 
    END; 

这正确编译。光标包含col1,col2和col3。

在SSRS,我有使用Oracle OLEDB提供的Oracle 11g共享数据源:

Provider=OraOLEDB.Oracle.1;Data Source=LIFEDEV 

(加上用户凭证)。

什么好作品:

  • 存储过程正确执行 在PL/SQL开发人员
  • '测试连接' 在SSRS精品工程
  • SELECT * FROM MyTable;查询字符串命令“文本”类型在SSRS报告中生成正确的字段。
  • .NET Oracle提供的,而不是甲骨文OLE DB提供程序

什么失败:

如果我更改命令类型为 '存储过程',然后输入 'pr_myproc',当我点击“确定'Visual Studio 2005(service pack 2)只是挂起/崩溃。

有没有人有任何这方面的知识/经验?

任何帮助将不胜感激。谢谢。

更多信息请

我修改从Oracle OLE DB提供程序到.NET Oracle提供的供应商,而且,奇妙的是,它的工作原理。

这似乎表明Oracle提供商存在问题。

还有什么想法?

回答

1

我们已经到了这个底部。

在程序所在的环境中,我们有一个实质的数据字典。查询信息时,两个提供者使用两个不同的查询。

这里是一个Oracle提供使用,取10+分钟:

select * from (select null PROCEDURE_CATALOG 
         , owner PROCEDURE_SCHEMA 
         , object_name PROCEDURE_NAME 
         , decode (object_type, 'PROCEDURE', 2, 'FUNCTION', 3, 1) PROCEDURE_TYPE 
         , null PROCEDURE_DEFINITION 
         , null DESCRIPTION 
         , created DATE_CREATED 
         , last_ddl_time DATE_MODIFIED 
       from all_objects where object_type in ('PROCEDURE','FUNCTION') 
       union all 
       select null PROCEDURE_CATALOG 
          , arg.owner PROCEDURE_SCHEMA 
          , arg.package_name||'.'||arg.object_name PROCEDURE_NAME 
          , decode(min(arg.position), 0, 3, 2) PROCEDURE_TYPE 
          , null PROCEDURE_DEFINITION 
          , decode(arg.overload, '', '', 'OVERLOAD') DESCRIPTION 
          , min(obj.created) DATE_CREATED 
          , max(obj.last_ddl_time) DATE_MODIFIED 
       from all_objects obj, all_arguments arg 
       where arg.package_name is not null 
       and arg.owner = obj.owner 
       and arg.object_id = obj.object_id 
       group by arg.owner, arg.package_name, arg.object_name, arg.overload) PROCEDURES 
WHERE PROCEDURE_NAME = '[MY_PROCEDURE_NAME]' order by 2, 3 

更多信息,可以发现here