Executer un proc stock SQL Server depuis Oracle
Bonjour !
Je voulais savoir s'il est possible d'exécuter une procédure stockée ou une requête select de Oracle vers SQL-Server.
En gros :
J'ai les deux SGBD : Oracle 11g et SQL-Server (2005 et 2008)
Depuis Oracle je dois récupérer des données d'une procédure stockée sous SQL-Server mais je veux pas recréer cette procédure T-SQL en PL/SQL pour éviter de maintenir deux choses au lieu d'une.
Donc j'ai mon serveur lié vers SQL-Server qu'on appellera "link"
J'ai vu qu'on peut exécuter une requête via :
Code:
DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE@link('REQUETE SQL OU T-SQL')
Ceci marche très bien, j'arrive à faire des insert, drop, update et delete.
Mais comment puis-je récupérer ce résultat si elle me renvoie le résultat d'un select :
Code:
DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE@link('select * from x1');
J'ai essayé :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| DECLARE
rc1 package.rctype;
rec1 x1%rowtype;
num_rows INTEGER;
BEGIN
num_rows := DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE@link('select * from x1'); --CREATE TABLE x1 (C1 integer, C2 smallint
dbms_output.put_line(num_rows);
rc1 := dbms_hs_result_set.get_next_result_set@link;
fetch rc1 into rec1;
dbms_output.put_line(rc1.C1);
close rc1;
END;
/ |
Mais j'ai des erreurs :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| ORA-06550: Ligne 2, colonne 9 :
PLS-00201: identifier 'PACKAGE.RCTYPE' must be declared
ORA-06550: Ligne 2, colonne 9 :
PL/SQL: Item ignored
ORA-06550: Ligne 3, colonne 10 :
PLS-00201: identifier 'X1' must be declared
ORA-06550: Ligne 3, colonne 10 :
PL/SQL: Item ignored
ORA-06550: Ligne 9, colonne 5 :
PLS-00320: the declaration of the type of this expression is incomplete or malformed
ORA-06550: Ligne 9, colonne 5 :
PL/SQL: Statement ignored
ORA-06550: Ligne 10, colonne 11 :
PLS-00320: the declaration of the type of this expression is incomplete or malformed
ORA-06550: Ligne 10, colonne 5 :
PL/SQL: SQL Statement ignored
ORA-06550: Ligne 11, colonne 28 :
PLS-00320: the declaration of the type of this expression is incomplete or malformed
ORA-06550: Ligne 11, colonne 7 :
PL/SQL: Statement ignored
ORA-06550: Ligne 12, colonne 11 :
PLS-00320: the declaration of the type of this expression is incomplete or malformed
ORA-06550: Ligne 12, colonne 5 :
PL/SQL: SQL Statement ignored
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error. |