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