2009-10-30 35 views

回答

1

Im no db guy,但是在Oracle proc中添加一個輸出參數呢?然後將其填充到proc中並將其返回給SQL服務器。下面是一個例子click here

心連心, 〜CK

+0

首先,我將與Ketten去。 – 2009-11-10 10:28:25

2

終於找到了一個解決方案很少 - 的關鍵問題(我們)是默認的RPC是鏈接服務器禁用。 Rpc,Rpc Out和Use Remote Collat​​ion的參數需要設置爲true。更多信息:

http://blog.sqlauthority.com/2007/10/18/sql-server-2005-fix-error-msg-7411-level-16-state-1-server-is-not-configured-for-rpc/

你使用,將取決於程序的輸出需求的解決方案。第一個示例返回一個輸出值。第二個示例沒有返回輸出值(數據在後續查詢中收集)。

實施例1

過程T2T_collect_all有兩個輸入參數(開始和結束日期)和一個輸出參數(行數)。

DECLARE @ l_i_parameter1 VARCHAR(10)

DECLARE @ l_i_parameter2 VARCHAR(10)

DECLARE @ l_i_parameter3 VARCHAR(10)

DECLARE @ l_i_parameter4 VARCHAR(10)

DECLARE @ l_o_parameter1 integer

SET @ l_i_parameter1 ='2009/10/01'

SET @ l_i_parameter2 = 'YYYY/MM/DD'

SET @ l_i_parameter3 = '2009/12/31'

SET @ l_i_parameter4 = 'YYYY/MM/DD'

SET @ l_o_parameter1 = 0

EXECUTE('begin T2T_collect_all(to_date(?,?),to_date(?,?),? ); end;',

 @l_i_parameter1, 

     @l_i_parameter2, 

     @l_i_parameter3, 

     @l_i_parameter4, 

     @l_o_parameter1 OUTPUT 

)AT ORA_DB;

更多信息:http://blogs.msdn.com/joaquinv/archive/2008/10/23/execute-oracle-stored-procedure-in-sql-server.aspx

實施例2a

過程T2T_collect_allx僅具有兩個輸入參數(開始和結束日期)。

EXECUTE( '開始T2T_collect_allx(SYSDATE - 40,SYSDATE); END;')ORA_DB;

實施例2b

SELECT * FROM OPENQUERY(ORA_DB, '開始T2T_collect_allx(SYSDATE - 40,SYSDATE); END;')

相關問題