The DBMS_HS_PASSTHROUGH
PL/SQL package allows you to send a statement directly to a non-Oracle system without being interpreted by the Oracle server. This can be useful if the non-Oracle system allows operations in statements for which there is no equivalent in Oracle.
This chapter discusses the following topics:
Overview
Operational Notes
Summary of DBMS_HS_PASSTHROUGH Subprograms
See Also:
Oracle Database Heterogeneous Connectivity User's Guide for more information about this packageThis section contains topics which relate to using the DBMS_HS_PASSTHROUGH
package.
You can execute passthrough SQL statements directly at the non-Oracle system using the PL/SQL package DBMS_HS_PASSTHROUGH
. Any statement executed with this package is executed in the same transaction as standard SQL statements.
See Also:
Oracle Database Heterogeneous Connectivity User's Guide for information about this packageThe DBMS_HS_PASSTHROUGH
package is a virtual package. It conceptually resides at the non-Oracle system. In reality, however, calls to this package are intercepted by Heterogeneous Services and mapped to one or more Heterogeneous Services calls. The driver, in turn, maps these Heterogeneous Services calls to the API of the non-Oracle system. The client application should invoke the procedures in the package through a database link in exactly the same way as it would invoke a non-Oracle system stored procedure. The special processing done by Heterogeneous Services is transparent to the user.
Table 75-1 DBMS_HS_PASSTHROUGH Package Subprograms
Subprogram | Description |
---|---|
Binds |
|
Binds |
|
Binds an |
|
Binds an |
|
Binds an |
|
Binds |
|
Closes the cursor and releases associated memory after the SQL statement has been run at the non-Oracle system |
|
Runs a (non- |
|
Runs a (non- |
|
Fetches rows from a query |
|
Retrieves column value from |
|
Similar to |
|
Opens a cursor for running a passthrough SQL statement at the non-Oracle system |
|
Parses SQL statement at non-Oracle system |
This procedure binds IN
OUT
bind variables.
DBMS_HS_PASSTHROUGH.BIND_INOUT_VARIABLE ( c IN BINARY_INTEGER NOT NULL, p IN BINARY_INTEGER NOT NULL, v IN OUT <dty>, n IN VARCHAR2);
<dty>
is either DATE
, NUMBER
, or VARCHAR2
.
Table 75-2 BIND_INOUT_VARIABLE Procedure Parameters
Parameter | Description |
---|---|
|
Cursor associated with the passthrough SQL statement. Cursor must be opened and parsed, using the routines |
|
Position of the bind variable in the SQL statement: Starts at 1. |
|
This value is used for two purposes: - To provide the IN value before the SQL statement is run. - To determine the size of the out value. |
|
(Optional) Name of the bind variable. For example, in |
Table 75-3 BIND_INOUT_VARIABLE Procedure Exceptions
Exception | Description |
---|---|
|
The cursor passed is invalid. |
|
Procedure is not run in right order. (Did you first open the cursor and parse the SQL statement?) |
|
The position of the bind variable is out of range. |
|
A |
This procedure binds IN
OUT
bind variables of data type RAW
.
DBMS_HS_PASSTHROUGH.BIND_INOUT_VARIABLE_RAW ( c IN BINARY_INTEGER NOT NULL, p IN BINARY_INTEGER NOT NULL, v IN OUT RAW, n IN VARCHAR2);
Table 75-4 BIND_INOUT_VARIABLE_RAW Procedure Parameters
Parameter | Description |
---|---|
|
Cursor associated with the passthrough SQL statement. Cursor must be opened and parsed using the routines |
|
Position of the bind variable in the SQL statement: Starts at 1. |
|
This value is used for two purposes: - To provide the IN value before the SQL statement is run. - To determine the size of the out value. |
|
(Optional) Name the bind variable. For example, in |
Table 75-5 BIND_INOUT_VARIABLE_RAW Procedure Exceptions
Exception | Description |
---|---|
|
The cursor passed is invalid. |
|
Procedure is not run in right order. (Did you first open the cursor and parse the SQL statement?) |
|
The position of the bind variable is out of range. |
|
A |
This procedure binds an OUT
variable with a PL/SQL program variable.
DBMS_HS_PASSTHROUGH.BIND_OUT_VARIABLE ( c IN BINARY_INTEGER NOT NULL, p IN BINARY_INTEGER NULL, v OUT <dty>, n IN VARCHAR2);
<dty>
is either DATE
, NUMBER
, or VARCHAR2
.
Table 75-6 BIND_OUT_VARIABLE Procedure Parameters
Parameter | Description |
---|---|
|
Cursor associated with the passthrough SQL statement. Cursor must be opened and parsed, using the routines |
|
Position of the bind variable in the SQL statement: Starts at 1. |
|
Variable in which the |
|
(Optional) Name of the bind variable. For example, in |
Table 75-7 BIND_OUT_VARIABLE Procedure Exceptions
Exception | Description |
---|---|
|
The cursor passed is invalid. |
|
Procedure is not run in right order. (Did you first open the cursor and parse the SQL statement?) |
|
The position of the bind variable is out of range. |
|
A |
This procedure binds an OUT
variable of data type RAW
with a PL/SQL program variable.
DBMS_HS_PASSTHROUGH.BIND_OUT_VARIABLE_RAW ( c IN BINARY_INTEGER NOT NULL, p IN BINARY_INTEGER NOT NULL, v OUT RAW, n IN VARCHAR2);
Table 75-8 BIND_OUT_VARIABLE_RAW Procedure Parameters
Parameter | Description |
---|---|
|
Cursor associated with the passthrough SQL statement. Cursor must be opened and parsed, using the routines |
|
Position of the bind variable in the SQL statement: Starts at 1. |
|
Variable in which the |
|
(Optional) Name of the bind variable. For example, in |
Table 75-9 BIND_OUT_VARIABLE_RAW Procedure Exceptions
Exception | Description |
---|---|
|
The cursor passed is invalid. |
|
Procedure is not run in right order. (Did you first open the cursor and parse the SQL statement?) |
|
The position of the bind variable is out of range. |
|
A |
This procedure binds an IN
variable positionally with a PL/SQL program variable.
DBMS_HS_PASSTHROUGH.BIND_VARIABLE ( c IN BINARY_INTEGER NOT NULL, p IN BINARY_INTEGER NOT NULL, v IN <dty>, n IN VARCHAR2);
<dty>
is either DATE
, NUMBER
, or VARCHAR2
.
Table 75-10 BIND_VARIABLE Procedure Parameters
Parameter | Description |
---|---|
|
Cursor associated with the passthrough SQL statement. Cursor must be opened and parsed using the routines |
|
Position of the bind variable in the SQL statement: Starts at 1. |
|
Value that must be passed to the bind variable name. |
|
(Optional) Name of the bind variable. For example, in |
Table 75-11 BIND_VARIABLE Procedure Exceptions
Exception | Description |
---|---|
|
The cursor passed is invalid. |
|
Procedure is not run in right order. (Did you first open the cursor and parse the SQL statement?) |
|
The position of the bind variable is out of range. |
|
A |
This procedure binds IN
variables of type RAW
.
DBMS_HS_PASSTHROUGH.BIND_VARIABLE_RAW ( c IN BINARY_INTEGER NOT NULL, p IN BINARY_INTEGER NOT NULL, v IN RAW, n IN VARCHAR2);
Table 75-12 BIND_VARIABLE_RAW Procedure Parameters
Parameter | Description |
---|---|
|
Cursor associated with the passthrough SQL statement. Cursor must be opened and parsed, using the routines |
|
Position of the bind variable in the SQL statement: Starts at 1. |
|
Value that must be passed to the bind variable. |
|
(Optional) Name of the bind variable. For example, in |
Table 75-13 BIND_VARIABLE_RAW Procedure Exceptions
Exception | Description |
---|---|
|
The cursor passed is invalid. |
|
Procedure is not run in right order. (Did you first open the cursor and parse the SQL statement?) |
|
The position of the bind variable is out of range. |
|
A |
This function closes the cursor and releases associated memory after the SQL statement has been run at the non-Oracle system. If the cursor was not open, then the operation is a "no operation".
This function runs a SQL statement immediately. Any valid SQL command except SELECT
can be run immediately. The statement must not contain any bind variables. The statement is passed in as a VARCHAR2
in the argument. Internally the SQL statement is run using the PASSTHROUGH
SQL protocol sequence of OPEN_CURSOR
, PARSE
, EXECUTE_NON_QUERY
, CLOSE_CURSOR
.
This function runs a SQL statement. The SQL statement cannot be a SELECT
statement. A cursor has to be open and the SQL statement has to be parsed before the SQL statement can be run.
This function fetches rows from a result set. The result set is defined with a SQL SELECT
statement. When there are no more rows to be fetched, the exception NO_DATA_FOUND
is raised. Before the rows can be fetched, a cursor has to be opened, and the SQL statement has to be parsed.
DBMS_HS_PASSTHROUGH.FETCH_ROW ( c IN BINARY_INTEGER NOT NULL, f IN BOOLEAN) RETURN BINARY_INTEGER;
Table 75-20 FETCH_ROW Function Parameters
Parameter | Description |
---|---|
|
Cursor associated with the passthrough SQL statement. Cursor must be opened and parsed, using the routines |
|
(Optional) Reexecutes
|
The returns the number of rows fetched. The function returns "0" if the last row was already fetched.
This procedure has two purposes:
It retrieves the select list items of SELECT
statements, after a row has been fetched.
It retrieves the OUT
bind values, after the SQL statement has been run.
DBMS_HS_PASSTHROUGH.GET_VALUE ( c IN BINARY_INTEGER NOT NULL, p IN BINARY_INTEGER NOT NULL, v OUT <dty>);
<dty>
is either DATE
, NUMBER
, or VARCHAR2
.
Table 75-22 GET_VALUE Procedure Parameters
Parameter | Description |
---|---|
|
Cursor associated with the passthrough SQL statement. Cursor must be opened and parsed, using the routines |
|
Position of the bind variable or select list item in the SQL statement: Starts at 1. |
|
Variable in which the |
Table 75-23 GET_VALUE Procedure Exceptions
Exception | Description |
---|---|
|
Returns |
|
The cursor passed is invalid. |
|
Procedure is not run in right order. (Did you first open the cursor and parse the SQL statement?) |
|
The position of the bind variable is out of range. |
|
A |
This procedure is similar to GET_VALUE
, but for data type RAW
.
DBMS_HS_PASSTHROUGH.GET_VALUE_RAW ( c IN BINARY_INTEGER NOT NULL, p IN BINARY_INTEGER NOT NULL, v OUT RAW);
Table 75-24 GET_VALUE_RAW Procedure Parameters
Parameter | Description |
---|---|
|
Cursor associated with the passthrough SQL statement. Cursor must be opened and parsed, using the routines |
|
Position of the bind variable or select list item in the SQL statement: Starts at 1. |
|
Variable in which the |
Table 75-25 GET_VALUE_RAW Procedure Exceptions
Exception | Description |
---|---|
|
Returns |
|
The cursor passed is invalid. |
|
Procedure is not run in right order. (Did you first open the cursor and parse the SQL statement?) |
|
The position of the bind variable is out of range. |
|
A |
This function opens a cursor for running a passthrough SQL statement at the non-Oracle system. This function must be called for any type of SQL statement.
The function returns a cursor, which must be used in subsequent calls. This call allocates memory. To deallocate the associated memory, call the procedure CLOSE_CURSOR
.