Oracle
 sql >> база данни >  >> RDS >> Oracle

Съхранени процедури на SQL Server от Oracle®

В SQL Server създайте и попълнете примерна таблица.

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)
INSERT INTO EMP VALUES (7521, 'WARD', 'SALESMAN', 7698, '02-01-1981', 1250, 500, 30)
INSERT INTO EMP VALUES (7566, 'JONES', 'MANAGER', 7839, '04-02-1981', 2975, NULL, 20)
INSERT INTO EMP VALUES (7654, 'MARTIN', 'SALESMAN', 7698, '09-28-1981', 1250, 1400, 30)
INSERT INTO EMP VALUES (7698, 'BLAKE', 'MANAGER', 7839, '05-01-1981', 2850, NULL, 30)
INSERT INTO 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)
INSERT INTO EMP VALUES (7839, 'KING', 'PRESIDENT', NULL, '11-17-1981', 5000, NULL, 10)
INSERT INTO EMP VALUES (7844, 'TURNER', 'SALESMAN', 7698, '09-08-1981', 1500, 0, 30)
INSERT INTO EMP VALUES (7876, 'ADAMS', 'CLERK', 7788, '01-12-1983', 1100, NULL, 20)
INSERT INTO EMP VALUES (7900, 'JAMES', 'CLERK', 7698, '12-03-1981', 950, NULL, 30)
INSERT INTO EMP VALUES (7902, 'FORD', 'ANALYST', 7566, '12-03-1981', 3000, NULL, 20)
INSERT INTO EMP VALUES (7934, 'MILLER', 'CLERK', 7782, '01-23-1982', 1300, NULL, 10)

Създайте съхранена процедура, която връща данните от тази таблица. Ще извикаме тази процедура от Oracle®.

CREATE PROCEDURE ReturnEmployees AS
BEGIN
  SELECT * FROM EMP
END

В SQL*Plus , използвайте следния DBMS_HS_PASSTHROUGH функции за изпълнение на съхранената процедура и показване на резултатите. В примера sqlserverlink е името на връзка към база данни, която използва DG4ODBC и ODBC драйвера на Easysoft SQL Server за свързване към SQL Server.

$ ./sqlplus / as sysdba

SQL*Plus: Release 11.2.0.2.0 Production on Fri Oct 14 10:03:53 2016

Copyright (c) 1982, 2011, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

SQL> set echo on;
set serveroutput on;
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');
 LOOP
  R1 := DBMS_HS_PASSTHROUGH.FETCH_ROW@sqlserverlink (c);
  EXIT WHEN R1 = 0;
  DBMS_HS_PASSTHROUGH.GET_VALUE@sqlserverlink (c, 1, SOUT);
  DBMS_OUTPUT.PUT_LINE(SOUT);
 END LOOP;
 DBMS_HS_PASSTHROUGH.CLOSE_CURSOR@sqlserverlink(c);
EXCEPTION
 WHEN NO_DATA_FOUND
 THEN DBMS_HS_PASSTHROUGH.CLOSE_CURSOR@sqlserverlink(c);
END;
/
SQL>
7369
7499
7521
7566
7654
7698
7782
7788
7839
7844
7876
7900
7902
7934

PL/SQL procedure successfully completed.

SQL>


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Филтриране на регистрационни файлове за предупреждения в EM13c

  2. Какъв тип обект връща методът за изпълнение на Spring Hibernate Template за заявка за броене в Oracle?

  3. ROWID (оракул) - има ли полза от него?

  4. Без диалектно съпоставяне за JDBC тип:-9

  5. Как да форматирате число като валута в Oracle