Oracle
 sql >> Base de données >  >> RDS >> Oracle

exécuté une procédure stockée oracle à partir du serveur sql à l'aide de la fonction de requête ouverte

Enfin trouvé quelques solutions - la clé du problème (pour nous) est que, par défaut, les RPC sont désactivés pour les serveurs liés. Les paramètres pour Rpc, Rpc Out et Use Remote Collation doivent être définis sur true. Plus d'informations :

http://blog.sqlauthority.com/2007/10/18/sql-server-2005-fix-error-msg-7411-level-16-state- 1-serveur-n'est-pas-configuré-pour-rpc/

La solution que vous utiliserez dépendra des exigences de sortie de la procédure. Le premier exemple renvoie une valeur de sortie. Dans le deuxième exemple, aucune valeur de sortie n'est renvoyée (les données sont collectées dans une requête ultérieure).

Exemple 1

La procédure T2T_collect_all a deux paramètres d'entrée (dates de début et de fin) et un paramètre de sortie (nombre de lignes).

DÉCLARER @l_i_parameter1 varchar(10)

DÉCLARER @l_i_parameter2 varchar(10)

DÉCLARER @l_i_parameter3 varchar(10)

DÉCLARER @l_i_parameter4 varchar(10)

DECLARE @l_o_parameter1 entier

SET @l_i_parameter1 ='2009/10/01'

SET @l_i_parameter2 ='aaaa/mm/jj'

SET @l_i_parameter3 ='2009/12/31'

SET @l_i_parameter4 ='aaaa/mm/jj'

SET @l_o_parameter1 =0

EXECUTER ( '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

) À ORA_DB ;

Plus d'informations :http://blogs.msdn.com/joaquinv/archive/2008/10/23/execute-oracle-stored-procedure-in-sql-server.aspx

Exemple 2a

La procédure T2T_collect_allx n'a que deux paramètres d'entrée (dates de début et de fin).

EXECUTER ('begin T2T_collect_allx (SYSDATE - 40, SYSDATE); end;') ORA_DB;

Exemple 2b

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