Maak in SQL Server een voorbeeldtabel en vul deze in.
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));INVOEG IN EMP-WAARDEN (7369, 'SMITH', 'CLERK', 7902, '12-17-1980', 800, NULL, 20)VOEG IN IN EMP-WAARDEN (7499, ' ALLEN', 'VERKOPER', 7698, '02-20-1981', 1600, 300, 30)INVOEG IN EMP WAARDEN (7521, 'WARD', 'VERKOPER', 7698, '02-01-1981', 1250, 500, 30) VOEG IN IN EMP WAARDEN (7566, 'JONES', 'MANAGER', 7839, '04-02-1981', 2975, NULL, 20) VOEG IN IN EMP WAARDEN (7654, 'MARTIN', 'SALESMAN', 7698, '09-28-1981', 1250, 1400, 30)INVOEREN IN EMP-WAARDEN (7698, 'BLAKE', 'MANAGER', 7839, '05-01-1981', 2850, NULL, 30)INVOEREN IN EMP WAARDEN (7782, 'CLARK', 'MANAGER', 7839, '06-09-1981', 2450, NULL, 10)INVOEG IN EMP WAARDEN (7788, 'SCOTT', 'ANALYST', 7566, '12-09- 1982', 3000, NULL, 20)INVOEREN IN EMP-WAARDEN (7839, 'KING', 'PRESIDENT', NULL, '11-17-1981', 5000, NULL, 10)INVOEREN IN EMP-WAARDEN (7844, 'TURNER', 'SALESMAN', 7698, '09-08-1981', 1500, 0, 30)INVOEG IN EMP-WAARDEN (7876, 'ADAMS', 'CLERK', 7788, '01-12 -1983', 1100, NULL, 20)INVOEREN IN EMP-WAARDEN (7900, 'JAMES', 'CLERK', 7698, '12-03-1981', 950, NULL, 30)INVOEREN IN EMP-WAARDEN (7902, 'FORD ', 'ANALYST', 7566, '12-03-1981', 3000, NULL, 20)INVOEG IN EMP WAARDEN (7934, 'MILLER', 'CLERK', 7782, '01-23-1982', 1300, NULL , 10)
Maak een opgeslagen procedure die de gegevens uit deze tabel retourneert. We zullen deze procedure aanroepen vanuit Oracle®.
PROCEDURE MAKEN ReturnEmployees ASBEGIN SELECT * FROM EMPEND
In SQL*Plus
, gebruik de volgende DBMS_HS_PASSTHROUGH
functies om de opgeslagen procedure uit te voeren en de resultaten weer te geven. In het voorbeeld sqlserverlink
is de naam van een databaselink die DG4ODBC en het SQL Server ODBC-stuurprogramma van Easysoft gebruikt om verbinding te maken met SQL Server.
$ ./sqlplus / as sysdbaSQL*Plus:release 11.2.0.2.0 Productie op vr 14 oktober 10:03:53 2016Copyright (c) 1982, 2011, Oracle. Alle rechten voorbehouden.Verbonden met:Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit ProductionSQL> stel echo in; zet serveroutput op; DECLARE c INTEGER; R1 INTEGER; SOUT varchar2(100); C1 INTEGER;BEGIN c:=DBMS_HS_PASSTHROUGH.OPEN_CURSOR@sqlserverlink; DBMS_HS_PASSTHROUGH.PARSE@sqlserverlink(c,'exec ReturnEmployees'); LUS R1 :=DBMS_HS_PASSTHROUGH.FETCH_ROW@sqlserverlink (c); VERLATEN WANNEER R1 =0; DBMS_HS_PASSTHROUGH.GET_VALUE@sqlserverlink (c, 1, SOUT); DBMS_OUTPUT.PUT_LINE(SOUT); EINDE LUS; DBMS_HS_PASSTHROUGH.CLOSE_CURSOR@sqlserverlink(c);UITZONDERING WANNEER GEEN_DATA_GEVONDEN DAN DBMS_HS_PASSTHROUGH.CLOSE_CURSOR@sqlserverlink(c);END;/SQL>73697499752175667658379824787788767900