簡體   English   中英

在SSRS中選擇Oracle存儲過程會使Visual Studio 2005 IDE崩潰

[英]Selecting Oracle Stored Procedure in SSRS Crashes Visual Studio 2005 IDE

問題條件

我有一個非常簡單的Oracle(11g)存儲過程,其聲明如下:

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 Provider for Oracle 11g:

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

(加上用戶憑據)。

可行的方法:

  • 該存儲過程在PL / SQL Developer中正確執行
  • SSRS中的“測試連接”功能正常
  • SELECT * FROM MyTable;查詢字符串SELECT * FROM MyTable; 命令類型為“文本”的SSRS報告中會生成正確的字段。
  • .NET Oracle提供程序而不是Oracle OLE DB提供程序

失敗原因:

如果我將“命令類型”更改為“存儲過程”並輸入“ pr_myproc”,則當我單擊“確定”時,Visual Studio 2005(Service Pack 2)只會掛起/崩潰。

有人對此有任何知識/經驗嗎?

非常感激任何的幫助。 謝謝。

更多信息

我已經將提供程序從Oracle OLE DB提供程序修改為.NET Oracle提供程序,並且神奇地,它可以工作。

這似乎表明Oracle提供程序存在問題。

還有其他想法嗎?

我們深入到此。

在過程所在的環境中,我們有大量的數據字典。 這兩個提供程序在查找信息時使用兩個不同的查詢。

這是Oracle Provider所使用的一種,耗時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

更多信息可以在這里找到

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM