sql >> Databáze >  >> RDS >> Oracle

provedla uloženou proceduru Oracle ze serveru SQL pomocí funkce otevřeného dotazu

Nakonec jsme našli několik řešení – klíčem k problému (pro nás) je, že ve výchozím nastavení jsou RPC pro propojené servery zakázány. Parametry Rpc, Rpc Out a Use Remote Collation musí být nastaveny na hodnotu true. Více informací:

http://blog.sqlauthority.com/2007/10/18/sql-server-2005-fix-error-msg-7411-level-16-state- 1-server-není-nakonfigurován-pro-rpc/

Řešení, které použijete, bude záviset na požadavcích na výstup procedury. První příklad vrací výstupní hodnotu. Druhý příklad nejsou vráceny žádné výstupní hodnoty (data se shromažďují v následném dotazu).

Příklad 1

Procedura T2T_collect_all má dva vstupní parametry (počáteční a koncové datum) a jeden výstupní parametr (počet řádků).

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 ='rrrr/mm/dd'

SET @l_i_parameter3 ='2009/12/31'

SET @l_i_parameter4 ='rrrr/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

) NA ORA_DB;

Další informace:http://blogs.msdn.com/joaquinv/archive/2008/10/23/execute-oracle-stored-procedure-in-sql-server.aspx

Příklad 2a

Procedura T2T_collect_allx má pouze dva vstupní parametry (počáteční a koncové datum).

EXECUTE ('begin T2T_collect_allx (SYSDATE – 40, SYSDATE); end;') ORA_DB;

Příklad 2b

SELECT * FROM OPENQUERY(ORA_DB, 'začátek T2T_collect_allx (SYSDATE - 40, SYSDATE ); konec;')



  1. Podmíněné v MYSQL klauzule where

  2. Jak odstranit řádek mysql po uplynutí času?

  3. Jak převést skalární poddotaz SQL na výraz SQLAlchemy

  4. Jak uložit uuid jako číslo?