ODBC drivers >

JDBC drivers >

Bridges, gateways >

Other >

All products

Connect JDBC to any ODBC driver

Connect JDBC to Microsoft Access

Cross-platform or cross-architecture access to any ODBC driver

ODBC access to any JDBC driver

Connect dbExpress applications to any ODBC driver

Connect XML applications to any ODBC driver

Access mutiple ODBC data sources from one SQL statement

Create custom ODBC drivers

Bespoke data access requirements

In the pipeline

Support

Resources

Quick start

Licensing

Knowledge Base

User Guides

Company

About Us

Careers & Partners

Calling SQL Server stored procedures from Oracle

In SQL Server, create and populate a sample 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
 )
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
 )

Create a stored procedure that returns the data from this table. We will be calling this procedure from Oracle.

CREATE PROCEDURE ReturnEmployees AS BEGIN
SELECT
 *
FROM
 EMP
END

In SQL*Plus, use the following DBMS_HS_PASSTHROUGH functions to execute the stored procedure and display the results. In the example, sqlserverlink is the name of a database link that uses DG4ODBC and Easysoft's SQL Server ODBC driver to connect to SQL Server.

$ ./sqlplus / as sysdba
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>
Share:

AltStyle によって変換されたページ (->オリジナル) /