Dans SQL Server, créez et remplissez un exemple de table.
CREATE TABLE EMP ( EMPNO FLOAT(4) NOT NULL PRIMARY KEY, ENAME VARCHAR(10), JOB VARCHAR(9), MGR FLOAT(4), HIREDATE DATE, SAL NUMERIC(7,2), COMM NUMERIC(7 ,2), DEPTNO NUMERIC(2));INSERT INTO EMP VALUES (7369, 'SMITH', 'CLERK', 7902, '12-17-1980', 800, NULL, 20)INSERT INTO EMP VALUES (7499, ' ALLEN', 'SALESMAN', 7698, '02-20-1981', 1600, 300, 30)INSÉRER DANS LES VALEURS EMP (7521, 'WARD', 'SALESMAN', 7698, '02-01-1981', 1250, 500, 30)INSÉRER DANS LES VALEURS EMP (7566, 'JONES', 'MANAGER', 7839, '04-02-1981', 2975, NULL, 20)INSÉRER DANS LES VALEURS EMP (7654, 'MARTIN', 'SALESMAN', 7698, '09-28-1981', 1250, 1400, 30)INSÉRER DANS LES VALEURS EMP (7698, 'BLAKE', 'MANAGER', 7839, '05-01-1981', 2850, NULL, 30)INSÉRER DANS EMP VALEURS (7782, 'CLARK', 'MANAGER', 7839, '06-09-1981', 2450, NULL, 10)INSÉRER DANS EMP VALEURS (7788, 'SCOTT', 'ANALYST', 7566, '12-09- 1982', 3000, NULL, 20)INSÉRER DANS LES VALEURS EMP (7839, 'KING', 'PRÉSIDENT', NULL, '11-17-1981', 5000, NULL, 10)INSÉRER DANS VALEURS EMP (7844, 'TURNER', 'SALESMAN', 7698, '09-08-1981', 1500, 0, 30)INSÉRER DANS LES VALEURS EMP (7876, 'ADAMS', 'CLERK', 7788, '01-12 -1983', 1100, NULL, 20)INSÉRER DANS LES VALEURS EMP (7900, 'JAMES', 'CLERK', 7698, '12-03-1981', 950, NULL, 30)INSÉRER DANS LES VALEURS EMP (7902, 'FORD ', 'ANALYST', 7566, '12-03-1981', 3000, NULL, 20)INSERT INTO EMP VALUES (7934, 'MILLER', 'CLERK', 7782, '01-23-1982', 1300, NULL , 10)
Créez une procédure stockée qui renvoie les données de cette table. Nous appellerons cette procédure depuis Oracle®.
CREATE PROCEDURE ReturnEmployees ASBEGIN SELECT * FROM EMPEND
En SQL*Plus
, utilisez le DBMS_HS_PASSTHROUGH
suivant fonctions pour exécuter la procédure stockée et afficher les résultats. Dans l'exemple, sqlserverlink
est le nom d'un lien de base de données qui utilise DG4ODBC et le pilote ODBC SQL Server d'Easysoft pour se connecter à SQL Server.
$ ./sqlplus / as sysdbaSQL*Plus :Version 11.2.0.2.0 Production le vendredi 14 octobre 10:03:53 2016Copyright (c) 1982, 2011, Oracle. Tous droits réservés.Connecté à :Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit ProductionSQL> set echo on;set serveroutput on;DECLARE c INTEGER; R1 ENTIER ; SOUT varchar2(100); C1 INTEGER;BEGIN c :=DBMS_HS_PASSTHROUGH.OPEN_CURSOR@sqlserverlink; DBMS_HS_PASSTHROUGH.PARSE@sqlserverlink(c,'exec ReturnEmployees'); BOUCLE R1 :=DBMS_HS_PASSTHROUGH.FETCH_ROW@sqlserverlink (c); SORTIR LORSQUE R1 =0 ; DBMS_HS_PASSTHROUGH.GET_VALUE@sqlserverlink (c, 1, SOUT); DBMS_OUTPUT.PUT_LINE(SOUT); FIN DE BOUCLE ; DBMS_HS_PASSTHROUGH.CLOSE_CURSOR@sqlserverlink(c);EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_HS_PASSTHROUGH.CLOSE_CURSOR@sqlserverlink(c);END;/SQL>73697499752175667654769877827788783978447876790079027934SQL>73697499752175667654769877827788783978447876790079027934SQL> procédure terminée avec succès