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 :
Ceci marche très bien, j'arrive à faire des insert, drop, update et delete.
Code : Sélectionner tout - Visualiser dans une fenêtre à part DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE@link('REQUETE SQL OU T-SQL')
Mais comment puis-je récupérer ce résultat si elle me renvoie le résultat d'un select :
J'ai essayé :
Code : Sélectionner tout - Visualiser dans une fenêtre à part DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE@link('select * from x1');
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 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; /
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.
Partager