C
DBMS_HS_PASSTHROUGH for Pass-Through SQL
This appendix describes the procedures and functions in the package DBMS_HS_PASSTHROUGH for pass-through SQL of Heterogeneous Services. See Chapter 8, "Application Development with Heterogeneous Services" for more information on how to use this package.
Referenced in this appendix are:
DBMS_HS_PASSTHROUGH.BIND_VARIABLE
Purpose
To bind an "IN" variable positionally with a PL/SQL program variable. See Chapter 8, "Application Development with Heterogeneous Services" on how to bind variables.
Interface Description
PROCEDURE BIND_VARIABLE (c IN BINARY_INTEGER NOT NULL,
pos IN BINARY_INTEGER NOT NULL,
val IN <dty>
[,name IN VARCHAR2])
Where <dty> is one of
To bind RAW variables use the procedure DBMS_HS_PASSTHROUGH.BIND_VARIABLE_RAW
Parameters and Descriptions
Parameter
|
Description
|
c
|
Cursor associated with the pass-through SQL statement. Cursor must be opened and parsed. using the routines OPEN_CURSOR and PARSE respectively.
|
pos
|
Position of the bind variable in the SQL statement. Starts from 1.
|
val
|
Value that must be passed to the bind variable
|
name
|
Optional parameter to name the bind variable. For example, in "SELECT * FROM emp WHERE ename=:ename", the position of the bind variable ":ename" is 1, the name is ":ename". This parameter can be used if the non-Oracle system supports "named binds" instead of positional binds. Note that passing the position is still required.
|
Exceptions
Exception
|
Description
|
ORA-28550
|
The cursor passed is invalid
|
ORA-28552
|
Procedure is not executed in right order. Did you first open the cursor and parse the SQL statement ?
|
ORA-28553
|
The position of the bind variable is out of range
|
ORA-28555
|
A NULL value was passed for a NOT NULL parameter
|
Purity Level
Purity level defined : WNDS, RNDS
See Also
DBMS_HS_PASSTHROUGH.OPEN_CURSOR DBMS_HS_PASSTHROUGH.PARSE DBMS_HS_PASSTHROUGH.BIND_OUT_VARIABLE DBMS_HS_PASSTHROUGH.BIND_VARIABLE_RAW
DBMS_HS_PASSTHROUGH.BIND_VARIABLE_RAW
Purpose
To bind IN variables of type RAW.
Interface Description
PROCEDURE BIND_VARIABLE_RAW
(c IN BINARY_INTEGER NOT NULL,
pos IN BINARY_INTEGER NOT NULL,
val IN RAW
[,name IN VARCHAR2])
Parameters and Descriptions
Parameter
|
Description
|
c
|
Cursor associated with the pass-through SQL statement. Cursor must be opened and parsed, using the routines OPEN_CURSOR and PARSE respectively.
|
pos
|
Position of the bind variable in the SQL statement. Starts from 1.
|
val
|
Value that must be passed to the bind variable.
|
name
|
Optional parameter to name the bind variable. For example, in "SELECT * FROM emp WHERE ename=:ename", the position of the bind variable ":ename" is 1, the name is ":ename". This parameter can be used if the non-Oracle system supports "named binds" instead of positional binds. Note that passing the position is still required.
|
Exceptions
Exception
|
Description
|
ORA-28550
|
The cursor passed is invalid.
|
ORA-28552
|
Procedure is not executed in right order. Did you first open the cursor and parse the SQL statement ?
|
ORA-28553
|
The position of the bind variable is out of range.
|
ORA-28555
|
A NULL value was passed for a NOT NULL parameter.
|
Purity Level
Purity level defined : WNDS, RNDS
See Also
DBMS_HS_PASSTHROUGH.OPEN_CURSOR DBMS_HS_PASSTHROUGH.PARSE DBMS_HS_PASSTHROUGH.BIND_VARIABLE DBMS_HS_PASSTHROUGH.BIND_OUT_VARIABLE
DBMS_HS_PASSTHROUGH.BIND_OUT_VARIABLE
Purpose
To bind an OUT variable with a PL/SQL program variable. See Chapter 8, "Application Development with Heterogeneous Services" for more information on binding OUT parameters.
Interface Description
PROCEDURE BIND_OUT_VARIABLE
c IN BINARY_INTEGER NOT NULL,
pos IN BINARY_INTEGER NOT NULL,
val OUT <dty>,
[,name IN VARCHAR2])
Where <dty> is one of
For binding OUT variables of datatype RAW, see BIND_OUT_VARIABLE_RAW
Parameters and Descriptions
Parameter
|
Description
|
c
|
Cursor associated with the pass-through SQL statement. Cursor must be opened and parsed, using the routines OPEN_CURSOR and PARSE respectively.
|
pos
|
Position of the bind variable in the SQL statement. Starts from 1.
|
val
|
Variable in which the OUT bind variable will store its value. The package will remember only the "size" of the variable. After the SQL statement is executed, you can use GET_VALUE to retrieve the value of the OUT parameter. The size of the retrieved value should not exceed the size of the parameter that was passed using BIND_OUT_VARIABLE.
|
name
|
Optional parameter to name the bind variable. For example, in "SELECT * FROM emp WHERE ename=:ename", the position of the bind variable ":ename" is 1, the name is ":ename". This parameter can be used if the non-Oracle system supports "named binds" instead of positional binds. Note that passing the position is still required.
|
Exceptions
Exception
|
Description
|
ORA-28550
|
The cursor passed is invalid.
|
ORA-28552
|
Procedure is not executed in right order. Did you first open the cursor and parse the SQL statement ?
|
ORA-28553
|
The position of the bind variable is out of range.
|
ORA-28555
|
A NULL value was passed for a NOT NULL parameter.
|
Purity Level
Purity level defined : WNDS, RNDS
See Also
DBMS_HS_PASSTHROUGH.OPEN_CURSOR DBMS_HS_PASSTHROUGH.PARSE DBMS_HS_PASSTHROUGH.BIND_OUT_VARIABLE_RAW DBMS_HS_PASSTHROUGH.BIND_VARIABLE DBMS_HS_PASSTHROUGH.BIND_VARIABLE_RAW DBMS_HS_PASSTHROUGH.GET_VALUE
DBMS_HS_PASSTHROUGH.BIND_OUT_VARIABLE_RAW
Purpose
To bind an OUT variable of datatype RAW with a PL/SQL program variable. See Chapter 8, "Application Development with Heterogeneous Services" for more information on binding OUT parameters.
Interface Description
PROCEDURE BIND_OUT_VARIABLE
c IN BINARY_INTEGER NOT NULL,
pos IN BINARY_INTEGER NOT NULL,
val OUT RAW,
,name IN VARCHAR2])
Parameters and Descriptions
Parameter
|
Description
|
c
|
Cursor associated with the pass-through SQL statement. Cursor must be opened and parsed, using the routines OPEN_CURSOR and PARSE respectively.
|
pos
|
Position of the bind variable in the SQL statement. Starts from 1.
|
val
|
Variable in which the OUT bind variable will store its value. The package will remember only the "size" of the variable. After the SQL statement is executed, you can use GET_VALUE to retrieve the value of the OUT parameter. The size of the retrieved value should not exceed the size of the parameter that was passed using BIND_OUT_VARIABLE_RAW.
|
name
|
Optional parameter to name the bind variable. For example, in "SELECT * FROM emp WHERE ename=:ename", the position of the bind variable ":ename" is 1, the name is ":ename". This parameter can be used if the non-Oracle system supports "named binds" instead of positional binds. Note that passing the position is still required.
|
Exceptions
Exception
|
Description
|
ORA-28550
|
The cursor passed is invalid.
|
ORA-28552
|
Procedure is not executed in right order. Did you first open the cursor and parse the SQL statement ?
|
ORA-28553
|
The position of the bind variable is out of range.
|
ORA-28555
|
A NULL value was passed for a NOT NULL parameter.
|
Purity Level
Purity level defined : WNDS, RNDS
See Also
DBMS_HS_PASSTHROUGH.OPEN_CURSOR DBMS_HS_PASSTHROUGH.PARSE DBMS_HS_PASSTHROUGH.BIND_OUT_VARIABLE DBMS_HS_PASSTHROUGH.BIND_VARIABLE DBMS_HS_PASSTHROUGH.BIND_VARIABLE_RAW DBMS_HS_PASSTHROUGH.GET_VALUE
DBMS_HS_PASSTHROUGH.BIND_INOUT_VARIABLE
Purpose
To bind IN OUT bind variables. See Chapter 8, "Application Development with Heterogeneous Services" for more information on binding IN OUT parameters.
Interface Description
PROCEDURE BIND_INOUT_VARIABLE
c IN BINARY_INTEGER NOT NULL,
pos IN BINARY_INTEGER NOT NULL,
val IN OUT <dty>,
,name IN VARCHAR2]
Where <dty> is one of
For binding IN OUT variables of datatype RAW see BIND_INOUT_VARIABLE_RAW.
Parameters and Descriptions
Parameter
|
Description
|
c
|
Cursor associated with the pass-through SQL statement. Cursor must be opened and parsed, using the routines OPEN_CURSOR and PARSE respectively.
|
pos
|
Position of the bind variable in the SQL statement. Starts from 1.
|
val
|
This value will be used for two purposes:
- To provide the IN value before the SQL statement is executed
- To determine the size of the out value
|
name
|
Optional parameter to name the bind variable. For example, in "SELECT * FROM emp WHERE ename=:ename", the position of the bind variable ":ename" is 1, the name is ":ename". This parameter can be used if the non-Oracle system supports "named binds" instead of positional binds. Note that passing the position is still required.
|
Exceptions
Exception
|
Description
|
ORA-28550
|
The cursor passed is invalid.
|
ORA-28552
|
Procedure is not executed in right order. Did you first open the cursor and parse the SQL statement ?
|
ORA-28553
|
The position of the bind variable is out of range.
|
ORA-28555
|
A NULL value was passed for a NOT NULL parameter.
|
Purity Level
Purity level defined : WNDS, RNDS
See Also
DBMS_HS_PASSTHROUGH.OPEN_CURSOR DBMS_HS_PASSTHROUGH.PARSE DBMS_HS_PASSTHROUGH.BIND_INOUT_VARIABLE_RAW DBMS_HS_PASSTHROUGH.BIND_OUT_VARIABLE DBMS_HS_PASSTHROUGH.BIND_OUT_VARIABLE_RAW DBMS_HS_PASSTHROUGH.BIND_VARIABLE DBMS_HS_PASSTHROUGH.BIND_VARIABLE_RAW DBMS_HS_PASSTHROUGH.GET_VALUE
DBMS_HS_PASSTHROUGH.BIND_INOUT_VARIABLE_RAW
Purpose
To bind IN OUT bind variables of datatype RAW. See Chapter 8, "Application Development with Heterogeneous Services" for more information on binding IN OUT parameters.
Interface Description
PROCEDURE BIND_INOUT_VARIABLE
c IN BINARY_INTEGER NOT NULL,
pos IN BINARY_INTEGER NOT NULL,
val IN OUT RAW,
[,name IN VARCHAR2]);
Parameters and Descriptions
Parameter
|
Description
|
c
|
Cursor associated with the pass-through SQL statement. Cursor must be opened and parsed' using the routines OPEN_CURSOR and PARSE respectively.
|
pos
|
Position of the bind variable in the SQL statement. Starts from 1.
|
val
|
This value will be used for two purposes:
- To provide the IN value before the SQL statement is executed
- To determine the size of the out value
|
name
|
Optional parameter to name the bind variable. For example, in "SELECT * FROM emp WHERE ename=:ename", the position of the bind variable ":ename" is 1, the name is ":ename". This parameter can be used if the non-Oracle system supports "named binds" instead of positional binds. Note that passing the position is still required.
|
Exceptions
Exception
|
Description
|
ORA-28550
|
The cursor passed is invalid.
|
ORA-28552
|
Procedure is not executed in right order. Did you first open the cursor and parse the SQL statement ?
|
ORA-28553
|
The position of the bind variable is out of range.
|
ORA-28555
|
A NULL value was passed for a NOT NULL parameter.
|
Purity Level
Purity level defined : WNDS, RNDS
See Also
DBMS_HS_PASSTHROUGH.OPEN_CURSOR DBMS_HS_PASSTHROUGH.PARSE DBMS_HS_PASSTHROUGH.BIND_INOUT_VARIABLE DBMS_HS_PASSTHROUGH.BIND_OUT_VARIABLE DBMS_HS_PASSTHROUGH.BIND_OUT_VARIABLE_RAW, DBMS_HS_PASSTHROUGH.BIND_VARIABLE DBMS_HS_PASSTHROUGH.BIND_VARIABLE_RAW DBMS_HS_PASSTHROUGH.GET_VALUE
DBMS_HS_PASSTHROUGH.CLOSE_CURSOR
Purpose
This function closes the cursor and releases associated memory after the SQL statement has been executed at the non-Oracle system. If the cursor was not open, the operation is a "no operation".
Interface Description
PROCEDURE CLOSE_CURSOR (c IN BINARY_INTEGER NOT NULL);
Parameter Description
Parameter
|
Description
|
c
|
Cursor to be released.
|
Exceptions
Exception
|
Description
|
ORA-28555
|
A NULL value was passed for a NOT NULL parameter.
|
Purity Level
Purity level defined : WNDS, RNDS
See Also
DBMS_HS_PASSTHROUGH.OPEN_CURSOR
DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE
Purpose
This function executes a SQL statement immediately. Any valid SQL command except SELECT can be executed 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 executed using the PASSTHROUGH SQL protocol sequence of OPEN_CURSOR, PARSE, EXECUTE_NON_QUERY, CLOSE_CURSOR.
Interface Description
FUNCTION EXECUTE_IMMEDIATE ( S IN VARCHAR2 NOT NULL )
RETURN BINARY_INTEGER;
Parameter Description
Parameter
|
Description
|
s
|
VARCHAR2 variable with the statement to be executed immediately.
|
Returns
The number of rows affected by the execution of the SQL statement.
Exceptions:
Exception
|
Description
|
ORA-28544
|
Max open cursors.
|
ORA-28551
|
SQL statement is invalid.
|
ORA-28555
|
A NULL value was passed for a NOT NULL parameter.
|
Purity Level
Purity level defined : NONE
See Also
DBMS_HS_PASSTHROUGH.OPEN_CURSOR
DBMS_HS_PASSTHROUGH.PARSE
DBMS_HS_PASSTHROUGH.EXECUTE_NON_QUERY
DBMS_HS_PASSTHROUGH.CLOSE_CURSOR
DBMS_HS_PASSTHROUGH.EXECUTE_NON_QUERY
Purpose
This function executes 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 executed.
Interface Description
FUNCTION EXECUTE_NON_QUERY (c IN BINARY_INTEGER NOT NULL)
RETURN BINARY_INTEGER
Parameter Description
Parameter
|
Description
|
c
|
Cursor associated with the pass-through SQL statement. Cursor must be opened and parsed, using the routines OPEN_CURSOR and PARSE respectively.
|
Returns
The number of rows affected by the SQL statement in the non-Oracle system
Exceptions
Exception
|
Description
|
ORA-28550
|
The cursor passed is invalid.
|
ORA-28552
|
BIND_VARIABLE procedure is not executed in right order. Did you first open the cursor and parse the SQL statement ?
|
ORA-28555
|
A NULL value was passed for a NOT NULL parameter.
|
Purity Level
Purity level defined : NONE
See Also
DBMS_HS_PASSTHROUGH.OPEN_CURSOR DBMS_HS_PASSTHROUGH.PARSE
DBMS_HS_PASSTHROUGH.FETCH_ROW
Purpose
To fetch 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.
Interface Description
FUNCTION FETCH_ROW
(c IN BINARY_INTEGER NOT NULL
[,first IN BOOLEAN])
RETURN BINARY_INTEGER;
Parameters and Descriptions
Parameter
|
Description
|
c
|
Cursor associated with the pass-through SQL statement. Cursor must be opened and parsed, using the routines OPEN_CURSOR and PARSE respectively.
|
first
|
Optional parameter to reexecute SELECT statement. Possible values:
- TRUE: reexecute SELECT statement.
- FALSE: fetch the next row, or if executed for the first time execute and fetch rows (default).
|
Returns
The returns the number of rows fetched. The function will return "0" if the last row was already fetched.
Exceptions
Exception
|
Description
|
ORA-28550
|
The cursor passed is invalid.
|
ORA-28552
|
Procedure is not executed in right order. Did you first open the cursor and parse the SQL statement ?
|
ORA-28555
|
A NULL value was passed for a NOT NULL parameter.
|
Purity Level
Purity level defined : WNDS
See Also
DBMS_HS_PASSTHROUGH.OPEN_CURSOR DBMS_HS_PASSTHROUGH.PARSE
DBMS_HS_PASSTHROUGH.GET_VALUE
Purpose
This procedure has two purposes:
- To retrieve the select list items of SELECT statements, after a row has been fetched.
- To retrieve the OUT bind values, after the SQL statement has been executed.
Interface Description
PROCEDURE GET_VALUE
(c IN BINARY_INTEGER NOT NULL,
pos IN BINARY_INTEGER NOT NULL,
val OUT <dty>);
Where <dty> is one of
For retrieving values of datatype RAW, see GET_VALUE_RAW.
Parameters and Descriptions
Parameter
|
Description
|
c
|
Cursor associated with the pass-through SQL statement. Cursor must be opened and parsed, using the routines OPEN_CURSOR and PARSE respectively.
|
pos
|
Position of the bind variable or select list item in the SQL statement. Starts from 1.
|
val
|
Variable in which the OUT bind variable or select list item will store its value.
|
Exceptions
Exception
|
Description
|
ORA-1403
|
Returns NO_DATA_FOUND exception when executing the GET_VALUE after the last row was fetched (i.e. FETCH_ROW returned "0").
|
ORA-28550
|
The cursor passed is invalid.
|
ORA-28552
|
Procedure is not executed in right order. Did you first open the cursor, parse and execute (or fetch) the SQL statement ?
|
ORA-28553
|
The position of the bind variable is out of range.
|
ORA-28555
|
A NULL value was passed for a NOT NULL parameter.
|
Purity Level
Purity level defined : WNDS
See Also
DBMS_HS_PASSTHROUGH.OPEN_CURSOR DBMS_HS_PASSTHROUGH.PARSE
DBMS_HS_PASSTHROUGH.FETCH_ROW DBMS_HS_PASSTHROUGH.GET_VALUE_RAW DBMS_HS_PASSTHROUGH.BIND_OUT_VARIABLE DBMS_HS_PASSTHROUGH.BIND_OUT_VARIABLE_RAW DBMS_HS_PASSTHROUGH.BIND_INOUT_VARIABLE DBMS_HS_PASSTHROUGH.BIND_INOUT_VARIABLE_RAW
DBMS_HS_PASSTHROUGH.GET_VALUE_RAW
Purpose
Similar to GET_VALUE, but for datatype RAW.
Interface Description
PROCEDURE GET_VALUE_RAW
(c IN BINARY_INTEGER NOT NULL,
pos IN BINARY_INTEGER NOT NULL,
val OUT RAW);
Parameters and Descriptions
Parameter
|
Description
|
c
|
Cursor associated with the pass-through SQL statement. Cursor must be opened and parsed, using the routines OPEN_CURSOR and PARSE respectively.
|
pos
|
Position of the bind variable or select list item in the SQL statement. Starts from 1.
|
val
|
Variable in which the OUT bind variable or select list item will store its value.
|
Exceptions
Exception
|
Description
|
ORA-1403
|
Returns NO_DATA_FOUND exception when executing the GET_VALUE after the last row was fetched (i.e. FETCH_ROW returned "0").
|
ORA-28550
|
The cursor passed is invalid.
|
ORA-28552
|
Procedure is not executed in right order. Did you first open the cursor, parse and execute (or fetch) the SQL statement ?
|
ORA-28553
|
The position of the bind variable is out of range.
|
ORA-28555
|
A NULL value was passed for a NOT NULL parameter.
|
Purity Level
Purity level defined : WNDS
See Also
DBMS_HS_PASSTHROUGH.OPEN_CURSOR DBMS_HS_PASSTHROUGH.PARSE
DBMS_HS_PASSTHROUGH.FETCH_ROW DBMS_HS_PASSTHROUGH.GET_VALUE DBMS_HS_PASSTHROUGH.BIND_OUT_VARIABLE DBMS_HS_PASSTHROUGH.BIND_OUT_VARIABLE_RAW DBMS_HS_PASSTHROUGH.BIND_INOUT_VARIABLE DBMS_HS_PASSTHROUGH.BIND_INOUT_VARIABLE_RAW
DBMS_HS_PASSTHROUGH.OPEN_CURSOR
Purpose
To open a cursor for executing a pass-through 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, you call the procedure DBMS_HS_PASSTHROUGH.CLOSE_CURSOR.
Interface Description
FUNCTION OPEN_CURSOR RETURN BINARY_INTEGER;
Returns
The cursor to be used on subsequent procedure and function calls.
Exceptions
Exception
|
Description
|
ORA-28554
|
Maximum number of open cursor has been exceeded. Increase Heterogeneous Services' OPEN_CURSORS initialization parameter.
|
Purity Level
Purity level defined : WNDS, RNDS
See Also
DBMS_HS_PASSTHROUGH.CLOSE_CURSOR
DBMS_HS_PASSTHROUGH.PARSE
Purpose
To parse SQL statement at non-Oracle system.
Interface Description
PROCEDURE GET_VALUE_RAW
(c IN BINARY_INTEGER NOT NULL,
stmt IN VARCHAR2 NOT NULL);
Parameters and Descriptions
Parameter
|
Description
|
c
|
Cursor associated with the pass-through SQL statement. Cursor must be opened using function OPEN_CURSOR.
|
stmt
|
Statement to be parsed.
|
Exceptions
Exception
|
Description
|
ORA-28550
|
The cursor passed is invalid.
|
ORA-28551
|
SQL statement is illegal.
|
ORA-28555
|
A NULL value was passed for a NOT NULL parameter.
|
Purity Level
Purity level defined : WNDS, RNDS
See Also
DBMS_HS_PASSTHROUGH.OPEN_CURSOR DBMS_HS_PASSTHROUGH.PARSE
DBMS_HS_PASSTHROUGH.FETCH_ROW DBMS_HS_PASSTHROUGH.GET_VALUE DBMS_HS_PASSTHROUGH.BIND_OUT_VARIABLE DBMS_HS_PASSTHROUGH.BIND_OUT_VARIABLE_RAW DBMS_HS_PASSTHROUGH.BIND_INOUT_VARIABLE DBMS_HS_PASSTHROUGH.BIND_INOUT_VARIABLE_RAW