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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE@link('select * from x1');
J'ai essayé :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.