sql >> Database teknologi >  >> RDS >> Oracle

udførte en oracle-lagret procedure fra sql-server ved hjælp af den åbne forespørgselsfunktion

Endelig opsporet et par løsninger - nøglen til problemet (for os) er, at RPC'er som standard er deaktiveret for sammenkædede servere. Parametrene for Rpc, Rpc Out og Use Remote Collation skal indstilles til sand. Mere info:

http://blog.sqlauthority.com/2007/10/18/sql-server-2005-fix-error-msg-7411-level-16-state- 1-server-er-ikke-konfigureret-til-rpc/

Den løsning, du bruger, afhænger af procedurens outputkrav. Det første eksempel returnerer en outputværdi. Det andet eksempel returneres ingen outputværdier (data indsamles i en efterfølgende forespørgsel).

Eksempel 1

Proceduren T2T_collect_all har to inputparametre (start- og slutdatoer) og en outputparameter (rækkeantal).

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

EXECUTE ( 'begynd 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;

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

Eksempel 2a

Proceduren T2T_collect_allx har kun to inputparametre (start- og slutdatoer).

EXECUTE ('begynd T2T_collect_allx (SYSDATE - 40, SYSDATE); slut;') ORA_DB;

Eksempel 2b

VÆLG * FRA OPENQUERY(ORA_DB, 'begynd T2T_collect_allx (SYSDATE - 40, SYSDATE ); slut;')



  1. Multiplikitetsbegrænsning overtrådte SQL Server 2008 - CodeFirst

  2. hvordan kalder man en lagret proc fra støvknapper og ændrer refcursor, der returneres?

  3. Tjek, hvilke brugere der er online

  4. Skift primær nøgle