Oracle9i Supplied PL/SQL Packages and Types Reference Release 2 (9.2) Part Number A96612-01 |
|
UTL_TCP , 2 of 2
This is a PL/SQL record type used to represent a TCP/IP connection.
TYPE connection IS RECORD ( remote_host VARCHAR2(255), -- remote host name remote_port PLS_INTEGER, -- remote port number local_host VARCHAR2(255), -- local host name local_port PLS_INTEGER, -- local port number charset VARCHAR2(30), -- character set for on-the-wire communication newline VARCHAR2(2), -- newline character sequence tx_timeout PLS_INTEGER, -- transfer time-out value (in seconds) private_sd PLS_INTEGER, -- for internal use );
The fields in a connection record are used to return information about the connection, which is often made using open_connection()
. Changing the values of those fields has no effect on the connection. The fields private_XXXX
are for implementation use only. You should not modify the values.
In the current release of the UTL_TCP
package, the parameters local_host
and local_port
are ignored when open_connection
makes a TCP/IP connection. It does not attempt to use the specified local host and port number when the connection is made. The local_host
and local_port
fields will not be set in the connection record returned by the function.
Time-out on write operations is not supported in the current release of the UTL_TCP
package.
The character sequence carriage-return line-feed. It is the newline sequence commonly used many communication standards.
CRLF varchar2(10);
This package variable defines the newline character sequence commonly used in many Internet protocols. This is the default value of the newline character sequence for write_line(),
specified when a connection is opened. While such protocols use <CR><LF>
to denote a new line, some implementations may choose to use just line-feed to denote a new line. In such cases, users can specify a different newline character sequence when a connection is opened.
This CRLF package variable is intended to be a constant that denotes the carriage- return line-feed character sequence. Do not modify its value. Modification may result in errors in other PL/SQL applications.
This function opens a TCP/IP connection to a specified service.
UTL_TCP.OPEN_CONNECTION (remote_host IN VARCHAR2, remote_port IN PLS_INTEGER, local_host IN VARCHAR2 DEFAULT NULL, local_port IN PLS_INTEGER DEFAULT NULL, in_buffer_size IN PLS_INTEGER DEFAULT NULL, out_buffer_size IN PLS_INTEGER DEFAULT NULL, charset IN VARCHAR2 DEFAULT NULL, newline IN VARCHAR2 DEFAULT CRLF, tx_timeout IN PLS_INTEGER DEFAULT NULL) RETURN connection;
Note that connections opened by this UTL_TCP package can remain open and be passed from one database call to another in a shared server configuration. However, the connection must be closed explicitly. The connection will remain open when the PL/SQL record variable that stores the connection goes out-of-scope in the PL/SQL program. Failing to close unwanted connections may result in unnecessary tying up of local and remote system resources.
The parameters local_host and local_port are ignored currently when open_connection makes a TCP/IP connection. It does not attempt to use the specified local host and port number when the connection is made.
In the current release of the UTL_TCP
package, the parameters local_host
and local_port
are ignored when open_connection
makes a TCP/IP connection. It does not attempt to use the specified local host and port number when the connection is made. The local_host
and local_port
fields will not be set in the connection record returned by the function.
Time-out on write operations is not supported in the current release of the UTL_TCP package.
close_connection(), close_all_connections()
This function determines the number of bytes available for reading from a TCP/IP connection. It is the number of bytes that can be read immediately without blocking. Determines if data is ready to be read from the connection.
UTL_TCP.AVAILABLE ( c IN OUT NOCOPY connection, timeout IN PLS_INTEGER DEFAULT 0) RETURN PLS_INTEGER;
The connection must have already been opened through a call to open_connection()
. Users may use this API to determine if data is available to be read before calling the read API so that the program will not be blocked because data is not ready to be read from the input.
The number of bytes available for reading returned by this function may less than than what is actually available. On some platforms, this function may only return 1, to indicate that some data is available. If you are concerned about the portability of your application, assume that this function returns a positive value when data is available for reading, and 0 when no data is available. The following example illustrates using this function in a portable manner:
DECLARE c utl_tcp.connection data VARCHAR2(256); len PLS_INTEGER; BEGIN c := utl_tcp.open_connection(...); LOOP IF (utl_tcp.available(c) > 0) THEN len := utl_tcp.read_text(c, data, 256); ELSE ---do some other things . . . . END IF END LOOP; END;
read_raw(), read_text(), read_line()
This function receives binary data from a service on an open connection.
UTL_TCP.READ_RAW (c IN OUT NOCOPY connection, data IN OUT NOCOPY RAW, len IN PLS_INTEGER DEFAULT 1, peek IN BOOLEAN DEFAULT FALSE) RETURN PLS_INTEGER;
The connection must have already been opened through a call to open_connection()
. This function does not return until the specified number of characters have been read, or the end of input has been reached.
If transfer time-out is set when the connection is opened, this function waits for each data packet to be ready to read until time-out occurs. If it occurs, this function stops reading and returns all the data read successfully. If no data is read successfully, the transfer_timeout
exception is raised. The exception can be handled and the read operation can be retried later.
read_text(), read_line(), available()
This function transmits a binary message to a service on an open connection.
UTL_TCP.WRITE_RAW (c IN OUT NOCOPY connection, data IN RAW, len IN PLS_INTEGER DEFAULT NULL) RETURN PLS_INTEGER;
The connection must have already been opened through a call to open_connection().
write_text(), write_line(), flush()
This function receives text data from a service on an open connection.
UTL_TCP.READ_TEXT (c IN OUT NOCOPY connection, data IN OUT NOCOPY VARCHAR2, len IN PLS_INTEGER DEFAULT 1, peek IN BOOLEAN DEFAULT FALSE) RETURN PLS_ INTEGER;
The connection must have already been opened through a call to open_connection()
. This function does not return until the specified number of characters has been read, or the end of input has been reached. Text messages will be converted from the on-the-wire character set, specified when the connection was opened, to the database character set before they are returned to the caller.
Unless explicitly overridden, the size of a VARCHAR2
buffer is specified in terms of bytes, while the parameter len
refers to the maximum number of characters to be read. When the database character set is multibyte, where a single character may consist of more than 1 byte, you should ensure that the buffer can hold the maximum of characters. In general, the size of the VARCHAR2
buffer should equal the number of characters to be read, multiplied by the maximum number of bytes of a character of the database character set.
If transfer time-out is set when the connection is opened, this function waits for each data packet to be ready to read until time-out occurs. If it occurs, this function stops reading and returns all the data read successfully. If no data is read successfully, the transfer_timeout
exception is raised. The exception can be handled and the read operation can be retried later.
If a partial multibyte character is found at the end of input, this function stops reading and returns all the complete multibyte characters read successfully. If no complete character is read successfully, the partial_multibyte_char
exception is raised. The exception can be handled and the bytes of that partial multibyte character can be read as binary by the read_raw
function. If a partial multibyte character is seen in the middle of the input because the remaining bytes of the character have not arrived and read time-out occurs, the transfer_timeout
exception is raised instead. The exception can be handled and the read operation can be retried later.
read_raw(), read_line(), available()
This function transmits a text message to a service on an open connection.
UTL_TCP.WRITE_TEXT (c IN OUT NOCOPY connection, data IN VARCHAR2, len IN PLS_INTEGER DEFAULT NULL) RETURN PLS_INTEGER;
The connection must have already been opened through a call to open_connection(). Text messages will be converted to the on-the-wire character set, specified when the connection was opened, before they are transmitted on the wire.
write_raw(), write_line(), flush()
This function receives a text line from a service on an open connection. A line is terminated by a line-feed, a carriage-return or a carriage-return followed by a line-feed.
UTL_TCP.READ_LINE (c IN OUT NOCOPY connection, data IN OUT NOCOPY VARCHAR2, remove_crlf IN BOOLEAN DEFAULT FALSE, peek IN BOOLEAN DEFAULT FALSE) RETURN PLS_INTEGER;
The connection must have already been opened through a call to open_connection(). This function does not return until the end-of-line have been reached, or the end of input has been reached. Text messages will be converted from the on-the-wire character set, specified when the connection was opened, to the database character set before they are returned to the caller.
If transfer time-out is set when the connection is opened, this function waits for each data packet to be ready to read until time-out occurs. If it occurs, this function stops reading and returns all the data read successfully. If no data is read successfully, the transfer_timeout
exception is raised. The exception can be handled and the read operation can be retried later.
If a partial multibyte character is found at the end of input, this function stops reading and returns all the complete multibyte characters read successfully. If no complete character is read successfully, the partial_multibyte_char
exception is raised. The exception can be handled and the bytes of that partial multibyte character can be read as binary by the read_raw
function. If a partial multibyte character is seen in the middle of the input because the remaining bytes of the character have not arrived and read time-out occurs, the transfer_timeout
exception is raised instead. The exception can be handled and the read operation can be retried later.
read_raw(), read_text(), available()
This function transmits a text line to a service on an open connection. The newline character sequence will be appended to the message before it is transmitted.
UTL_TCP.WRITE_LINE (c IN OUT NOCOPY connection, data IN VARCHAR2 DEFAULT NULL) RETURN PLS_INTEGER;
Parameter | Description |
---|---|
|
The TCP connection to send data to. |
|
The buffer containing the data to be sent. |
|
The actual number of characters of data transmitted. |
The connection must have already been opened through a call to open_connection(). Text messages will be converted to the on-the-wire character set, specified when the connection was opened, before they are transmitted on the wire.
write_raw(), write_text(), flush()
Convenient forms of the read functions, which return the data read instead of the amount of data read.
UTL_TCP.GET_RAW (c IN OUT NOCOPY connection, len IN PLS_INTEGER DEFAULT 1, peek IN BOOLEAN DEFAULT FALSE) RETURN RAW; UTL_TCP.GET_TEXT (c IN OUT NOCOPY connection, len IN PLS_INTEGER DEFAULT 1, peek IN BOOLEAN DEFAULT FALSE) RETURN VARCHAR2; UTL_TCP.GET_LINE (c IN OUT NOCOPY connection, remove_crlf IN BOOLEAN DEFAULT false, peek IN BOOLEAN DEFAULT FALSE) RETURN VARCHAR2;
The connection must have already been opened through a call to open_connection().
For all the get_*
APIs described in this section, see the corresponding read_*
API for the read time-out issue. For get_text
and get_line
, see the corresponding
read_*
API for character set conversion, buffer size, and multibyte character issues.
read_raw(), read_text(), read_line()
This procedure transmits all data in the output buffer, if a buffer is used, to the server immediately.
UTL_TCP.FLUSH (c IN OUT NOCOPY connection);
Parameter | Description |
---|---|
|
The TCP connection to send data to. |
The connection must have already been opened through a call to open_connection().
write_raw(), write_text(), write_line()
This procedure closes an open TCP/IP connection.
UTL_TCP.close_CLOSE_CONNECTION (c IN OUT NOCOPY connection);
Parameter | Description |
---|---|
|
The TCP connection to close. |
Connection must have been opened by a previous call to open_connection()
. The fields remote_host, remote_port, local_host, local_port
and charset
of c will be reset after the connection is closed.
An open connection must be closed explicitly. An open connection will remain open when the PL/SQL record variable that stores the connection goes out-of-scope in the PL/SQL program. Failing to close unwanted connections may result in unnecessary tying up of local and remote system resources.
This procedure closes all open TCP/IP connections.
UTL_TCP.CLOSE_ALL_CONNECTIONS;
This call is provided to close all connections before a PL/SQL program avoid dangling connections.
open_connection(), close_connection()
|
Copyright © 2000, 2002 Oracle Corporation. All Rights Reserved. |
|