sql >> Base de Datos >  >> RDS >> Oracle

Procedimientos almacenados de SQL Server de Oracle®

En SQL Server, cree y complete una tabla de muestra.

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));INSERTAR EN VALORES EMP (7369, 'SMITH', 'CLERK', 7902, '17-12-1980', 800, NULL, 20)INSERTAR EN VALORES EMP (7499, ' ALLEN', 'VENDEDOR', 7698, '02-20-1981', 1600, 300, 30)INSERTAR EN VALORES EMP (7521, 'WARD', 'VENDEDOR', 7698, '02-01-1981', 1250, 500, 30) INSERTAR EN VALORES EMP (7566, 'JONES', 'GERENTE', 7839, '02-04-1981', 2975, NULL, 20) INSERTAR EN VALORES EMP (7654, 'MARTIN', 'VENDEDOR', 7698, '09-28-1981', 1250, 1400, 30) INSERTAR EN VALORES EMP (7698, 'BLAKE', 'MANAGER', 7839, '05-01-1981', 2850, NULL, 30) INSERTAR EN EMP VALORES (7782, 'CLARK', 'ADMINISTRADOR', 7839, '06-09-1981', 2450, NULO, 10) INSERTAR EN EMP VALORES (7788, 'SCOTT', 'ANALISTA', 7566, '12-09- 1982', 3000, NULO, 20) INSERTAR EN VALORES EMP (7839, 'REY', 'PRESIDENTE', NULO, '17-11-1981', 5000, NULO, 10) INSERTAR EN VALORES EMP (7844, 'TURNER', 'VENDEDOR', 7698, '08-09-1981', 1500, 0, 30) INSERTAR EN VALORES EMP (7876, 'ADAMS', 'CLERK', 7788, '01-12 -1983', 1100, NULL, 20)INSERTAR EN VALORES EMP (7900, 'JAMES', 'CLERK', 7698, '12-03-1981', 950, NULL, 30)INSERTAR EN VALORES EMP (7902, 'FORD ', 'ANALYST', 7566, '12-03-1981', 3000, NULL, 20) INSERTAR EN VALORES EMP (7934, 'MILLER', 'CLERK', 7782, '01-23-1982', 1300, NULL , 10)

Cree un procedimiento almacenado que devuelva los datos de esta tabla. Llamaremos a este procedimiento desde Oracle®.

CREAR PROCEDIMIENTO ReturnEmployees ASBEGIN SELECT * FROM EMPEND

En SQL*Plus , use el siguiente DBMS_HS_PASSTHROUGH funciones para ejecutar el procedimiento almacenado y mostrar los resultados. En el ejemplo, sqlserverlink es el nombre de un enlace de base de datos que utiliza DG4ODBC y el controlador ODBC de SQL Server de Easysoft para conectarse a SQL Server.

$ ./sqlplus / as sysdbaSQL*Plus:Versión 11.2.0.2.0 Producción el viernes 14 de octubre 10:03:53 2016Copyright (c) 1982, 2011, Oracle. Todos los derechos reservados. Conectado a:Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit ProductionSQL> activar eco; activar salida del servidor; DECLARE c INTEGER; R1 ENTERO; SOUTvarchar2(100); C1 INTEGER;COMENZAR c :=DBMS_HS_PASSTHROUGH.OPEN_CURSOR@sqlserverlink; DBMS_HS_PASSTHROUGH.PARSE@sqlserverlink(c,'exec ReturnEmployees'); BUCLE R1 :=DBMS_HS_PASSTHROUGH.FETCH_ROW@sqlserverlink (c); SALIR CUANDO R1 =0; DBMS_HS_PASSTHROUGH.GET_VALUE@sqlserverlink (c, 1, SOUT); DBMS_SALIDA.PUT_LINE(SUR); FIN DEL BUCLE; DBMS_HS_PASSTHROUGH.CLOSE_CURSOR@sqlserverlink(c);EXCEPCIÓN CUANDO NO SE ENCUENTRAN DATOS ENTONCES DBMS_HS_PASSTHROUGH.CLOSE_CURSOR@sqlserverlink(c);FIN;/SQL>7369749975217566765476987782778878397844787679034902>