sql >> Databasteknik >  >> RDS >> Oracle

körde en oracle-lagrad procedur från SQL-servern med hjälp av den öppna frågefunktionen

Slutligen hittade några lösningar – nyckeln till problemet (för oss) är att RPC:er som standard är inaktiverade för länkade servrar. Parametrarna för Rpc, Rpc Out och Use Remote Collation måste ställas in på sant. Mer information:

http://blog.sqlauthority.com/2007/10/18/sql-server-2005-fix-error-msg-7411-level-16-state- 1-server-är-inte-konfigurerad-för-rpc/

Vilken lösning du använder beror på förfarandets utdatakrav. Det första exemplet returnerar ett utdatavärde. Det andra exemplet returneras inga utdatavärden (data samlas in i en efterföljande fråga).

Exempel 1

Proceduren T2T_collect_all har två indataparametrar (start- och slutdatum) och en utdataparameter (radantal).

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 heltal

SET @l_i_parameter1 ='2009/10/01'

SET @l_i_parameter2 ='åååå/mm/dd'

SET @l_i_parameter3 ='2009/12/31'

SET @l_i_parameter4 ='åååå/mm/dd'

SET @l_o_parameter1 =0

UTFÖR ( 'begynna T2T_collect_all(to_date(?, ?), to_date(?, ?), ? ); end;', ​​

      @l_i_parameter1, 

      @l_i_parameter2,

      @l_i_parameter3, 

      @l_i_parameter4,

      @l_o_parameter1 OUTPUT

) PÅ ORA_DB;

Mer information:http://blogs.msdn.com/joaquinv/archive/2008/10/23/execute-oracle-stored-procedure-in-sql-server.aspx

Exempel 2a

Proceduren T2T_collect_allx har bara två inmatningsparametrar (start- och slutdatum).

UTFÖR ('börja T2T_collect_allx (SYSDATE - 40, SYSDATE); slut;') ORA_DB;

Exempel 2b

SELECT * FROM OPENQUERY(ORA_DB, 'begin T2T_collect_allx (SYSDATE - 40, SYSDATE ); end;')



  1. Hitta information om främmande nyckel med Perl/DBI/MySQL/InnoDB

  2. Hur jämför man värden för sista och näst sista posten i tabellen?

  3. Mysql Konvertera kolumn till rad (pivottabell)

  4. Är Joomla 2.5 mycket snabbare än Joomla 1.5 Querywise