Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Procedimentos armazenados do SQL Server da Oracle®


No SQL Server, crie e preencha uma tabela de amostra.
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', 'VENDEDOR', 7698, '20-02-1981', 1600, 300, 30) INSERIR NOS VALORES EMP (7521, 'WARD', 'VENDEDOR', 7698, '01-02-1981', 1250, . 7698, '09-28-1981', 1250, 1400, 30)INSERIR NOS VALORES EMP (7698, 'BLAKE', 'MANAGER', 7839, '05-01-1981', 2850, NULL, 30)INSERIR NO EMP VALUES (7782, 'CLARK', 'MANAGER', 7839, '06-09-1981', 2450, NULL, 10)INSERT INTO EMP VALUES (7788, 'SCOTT', 'ANALYST', 7566, '12-09- 1982', 3000, NULL, 20)INSERIR EM VALORES EMP (7839, 'KING', 'PRESIDENT', NULL, '11-17-1981', 5000, NULL, 10)INSERT INTO VALORES EMP (7844, 'TURNER', 'VENDEDORES', 7698, '09-08-1981', 1500, 0, 30)INSERT INTO EMP VALUES (7876, 'ADAMS', 'CLERK', 7788, '01-12 -1983', 1100, NULL, 20) INSERIR NOS VALORES EMP (7900, 'JAMES', 'CLERK', 7698, '12-03-1981', 950, NULL, 30)INSERIR NOS VALORES EMP (7902, 'FORD ', 'ANALISTA', 7566, '12-03-1981', 3000, NULL, 20)INSERIR NOS VALORES EMP (7934, 'MILLER', 'CLERK', 7782, '01-23-1982', 1300, NULL , 10)

Crie um procedimento armazenado que retorne os dados desta tabela. Estaremos chamando este procedimento do Oracle®.
CREATE PROCEDURE ReturnEmployees ASBEGIN SELECT * FROM EMPEND

Em SQL*Plus , use o seguinte DBMS_HS_PASSTHROUGH funções para executar o procedimento armazenado e exibir os resultados. No exemplo, sqlserverlink é o nome de um link de banco de dados que usa DG4ODBC e o driver ODBC do SQL Server da Easysoft para se conectar ao SQL Server.
$ ./sqlplus / as sysdbaSQL*Plus:Release 11.2.0.2.0 Produção em sex 14 de outubro 10:03:53 2016Copyright (c) 1982, 2011, Oracle. Todos os direitos reservados. Conectado a:Oracle Database 11g Express Edition Versão 11.2.0.2.0 - ProductionSQL de 64 bits> ativar o eco; ativar a saída do servidor; DECLARE c INTEGER; R1 INTEIRO; SOUT varchar2(100); C1 INTEGER;BEGIN c :=DBMS_HS_PASSTHROUGH.OPEN_CURSOR@sqlserverlink; DBMS_HS_PASSTHROUGH.PARSE@sqlserverlink(c,'exec ReturnEmployees'); LOOP R1 :=DBMS_HS_PASSTHROUGH.FETCH_ROW@sqlserverlink (c); SAIR QUANDO R1 =0; DBMS_HS_PASSTHROUGH.GET_VALUE@sqlserverlink (c, 1, SOUT); DBMS_OUTPUT.PUT_LINE(SOUT); FIM DO LOOP; DBMS_HS_PASSTHROUGH.CLOSE_CURSOR@sqlserverlink(c);EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_HS_PASSTHROUGH.CLOSE_CURSOR@sqlserverlink(c);END;/SQL>736974997521756676547698778277887839784478767900790279.