NAME

BridgeServer.pm - Server for remote UnixODBC clients.

SYNOPSIS

use UnixODBC::BridgeServer;
&UnixODBC::BridgeServer::main();

DESCRIPTION

The API function names correspond to the ODBC functions in UnixODBC.pm. Instead of setting multiple parameters as in the C library functions, the bridge API functions return multiple parameters as a list.

Application Programming Interface

ODBC Return Values

The ODBC API defines these return values for the status of function
calls.

Perl Variable                   Numeric Value
-------------                   -------------
$SQL_NULL_DATA                  -1
$SQL_DATA_AT_EXEC               -2
$SQL_SUCCESS                    0
$SQL_SUCCESS_WITH_INFO          1
$SQL_NO_DATA                    100
$SQL_NO_DATA_FOUND              100
$SQL_ERROR                      -1
$SQL_INVALID_HANDLE             -2
$SQL_STILL_EXECUTING            2
$SQL_NEED_DATA                  99

Methods in the UnixODBC::BridgeServer API

$c is an instance of a UnixODBC client connected to a UnixODBC server. Refer to the example scripts for sample applications.

dm_log_open ($appname, $logfilename)

Opens a log file on the remote server.  You must have 
write privileges in that directory.

Returns 0;

$c -> dm_log_open ('ODBC Bridge', '/tmp/odbcbridge.log');

dm_log_close

Closes the log file on the remote server.

$c -> dm_log_close;

sql_alloc_handle ($handle_type, $parent_handle)

Returns the new handle, or undef on error.

# Allocate an environment handle

$evh = $c -> sql_alloc_handle ($SQL_HANDLE_ENV, $SQL_NULL_HANDLE);

# Allocate a connection handle

$cnh = $c -> sql_alloc_handle ($SQL_HANDLE_DBC, $evh);

# Allocate a statement handle

$sth = $c -> sql_alloc_handle ($SQL_HANDLE_STMT, $cnh);

sql_cancel ($sth)

Returns the ODBC API return value.

$r = $c -> sql_cancel ($sth);

sql_col_attribute ($sth, $colno, $attr, $maxlen)

Returns a list of
- SQL return value
- Text attribute if any
- Length of text attribute
- Numeric attribute

($r, $text, $textlen, $num) = 
    $c -> sql_col_attribute ($sth, 1, $SQL_COLUMN_NAME, 255);

sql_columns ($sth, $catalog, $catalog_length, $schema, $schema_length, $titles, $titles_length, $type, $type_length)

    Returns the ODBC API return value.

    # Retrieve and print all column names for table named $table
    $r = $c -> sql_columns ($sth, '', 0, '', 0, 
			    "$table", length($table), '' 0);
    while (1) {
	$r = $c -> sql_fetch ($sth);
	last if $r == $SQL_NO_DATA;
	if ($r != $SQL_SUCCESS) {
	    ($r, $sqlstate, $native, $text, $textlen) = 
		$c -> sql_get_diag_rec ($SQL_HANDLE_STMT, $sth, 1, 255);
	    print "[sql_fetch]$text\n";
	    return 1;
	} 

	# Column names are the fourth column of the result set.
	($r, $text, $textlen) = 
	    $c -> sql_get_data ($sth, 4, $SQL_C_CHAR, 255);
	last if $r == $SQL_NO_DATA;
	print "$text\n";
	if ($r != $SQL_SUCCESS) {
	    ($r, $sqlstate, $native, $text, $textlen) = 
		$c -> sql_get_diag_rec ($SQL_HANDLE_STMT, $sth, 1, 255);
	    print "[sql_get_data]$text\n";
	    return 1;
	} 
    }

sql_connect ($cnh, $dsn, $username, $username_len, $password, $password_len)

    Returns the ODBC API return value.

    $r = $c -> sql_connect ($cnh, 'Customers', 
		      'joe', length('joe'),
		      'password', length('password'));

sql_data_sources ($evh, $order, $maxlength1, $maxlength2);

    Returns a list of
    - ODBC API return value.
    - DSN name.
    - Length of DSN name text.
    - Name of DBMS Driver for DSN.
    - Length of driver text.

    ($r, $dsnname, $dsnlength, $drivername, $drivernamelength) = 
      $c -> sql_data_sources ( $evh, $SQL_FETCH_FIRST, 
			       $messagelength1, 
			       $messagelength2 );

sql_describe_col ($sth, $colno, $maxlen)

Returns a list of 
- SQL API return value
- Column name
- Name length
- Data type
- Size
- Decimal digits
- Nullable

($r, $name, $namelength, $type, $size, $decimal_digits, $nullable) 
   = $c -> sql_describe_col ($sth, 1, 255);

sql_disconnect ($cnh)

Returns the ODBC API return value.

$r = sql_disconnect ($cnh);

sql_drivers ($evh, $order, $desc_max_len, $attr_max_len)

Returns a list of: 
- SQL API return value
- Driver description string
- Driver description string length
- Attribute description string
- Attribute description string length

my ($r, $desc, $desc_len, $attr, $attr_len) =
    sql_drivers ($evh, $order, $desc_max_len, $attr_max_len);

sql_end_tran ($handle_type, $handle, $completion_type)

Returns the ODBC API return value.

$r = sql_end_tran ($SQL_HANDLE_STMT, $sth, 0);

sql_exec_direct ($sth, $query, $querylength)

Returns the ODBC SQL return value

$r = $c -> sql_exec_direct ($sth, $query, length ($query));

sql_execute ($sth)

Returns the ODBC API return value

$r = $c -> sql_execute ($sth);

sql_fetch ($sth)

Returns the ODBC API return value.

$r = sql_fetch ($sth);

sql_fetch_scroll ($sth, $order, $offset);

Returns the ODBC API return value.

$r = &UnixODBC::SQLFetchScroll ($sth, $SQL_FETCH_NEXT, $row++);

sql_foreign_keys ($sth, $catalog, $catalog_length, $schema, $schema_length, $table, $table_length, $foreign_catalog, $foreign_catalog_length, $foreign_schema, $foreign_schema_length, $foreign_table, $foreign_table_length)

    Returns the ODBC API return value.

    $r = $c -> sql_foreign_keys ($sth, '', 0, '', 0, $table, length ($table),
				 '', 0, '', 0, $foreign_table, 
				 length ($foreign_table));

sql_free_connect ($cnh)

Returns the ODBC API return value.

$r = $c -> sql_free_connect ($cnh);

sql_free_handle ($handle_type, $handle)

Returns the ODBC API return value.

# Free environment handle

$r = $c -> sql_free_handle ($SQL_HANDLE_ENV, $evh);

# Free connection handle

$r = $c -> sql_free_handle ($SQL_HANDLE_DBC, $cnh);

# Free statement handle

$r = $c -> sql_free_handle ($SQL_HANDLE_STMT, $sth);

sql_get_cursor_name ($sth, $maxlen)

Returns a list of 
- API return value
- Cursor name
- Length of cursor name

($r, $cursorname, $length) = 
   $c -> sql_get_cursor_name ($sth, 255);

sql_get_data ($sth, $colno, $datatype, $maxlen)

Returns a list of
- API return value
- Result text
- Result text length

($r, $text, $len) = sql_get_data ($sth, 1, $SQL_C_CHAR, 255);

sql_get_diag_field ($handle_type, $handle, $fieldno, $maxlen)

Returns a list of
- API return value
- Server native error
- ODBC error
- ODBC error length

($r, $native, $text, $textlen) = 
   $c -> sql_get_diag_field ($SQL_HANDLE_STMT, $sth, 1, 255);

sql_get_diag_rec ($handle_type, $handle, $recno, $maxlength)

Returns a list of: 
 - API return value
 - SQL state
 - DBMS error number
 - Error text
 - Error text length

 If the return value is $SQL_NO_DATA, the remaining list elements
 are empty.

($r, $sqlstate, $native, $text, $textlen) = 
    $c -> sql_get_diag_rec ($SQL_HANDLE_ENV, $evh, 1, 255);

sql_get_functions ($cnh, $function);

Returns a list of 
- API return value
- Non-zero if function is supported, zero if not supported.

my ($r, $s) = $c -> sql_get_functions ($cnh, $SQL_API_SQLALLOCHANDLESTD);

sql_get_type_info ($sth, $type)

Returns the ODBC API return value.

$r = $c -> sql_get_type_info ($sth, $SQL_ALL_TYPES);

sql_more_results ($sth)

Returns the ODBC API return value.

$r = $c -> sql_more_results ($sth);

sql_native_sql ($cnh, $query, $querylength, $maxlen)

Returns a list of 
- API return value
- Translated SQL query
- Length of translated query

($r, $nativequery, $length) = 
   $c -> sql_native_sql ($cnh, $query, length ($query), 255);

sql_num_result_columns ($sth)

Returns a list of 
- API return value
- Number of columns in result set

($r, $ncols) = sql_num_result_columns ($sth);

sql_prepare ($sth, $query, $querylength)

Returns the ODBC API value.

$r = $c -> sql_prepare ($sth, $query, length ($query) );

sql_procedure_columns ($sth, $catalog, $catalog_length, $schema, $schema_length, $proc, $proc_length, $column, $column_length);

Returns the ODBC API return value.

$r = $c -> sql_procedure_columns ($sth, '', 0, '', 0, '', 0, '', 0);

sql_procedures ($sth, $catalog, $catalog_length, $schema, $schema_length, $proc, $proc_length);

Returns the ODBC API return value.

$r = &UnixODBC::SQLProcedures ($sth, '', 0, '', 0, '', 0);

sql_row_count ($sth)

Returns a list of
- API return value
- Number of rows in result set

($r, $nrows) = sql_row_count ($sth);

sql_set_cursor_name ($sth, $cursorname, $length)

Returns the ODBC API return value.

$r = $c -> sql_set_cursor_name ($sth, 'cursor', length('cursor'));

sql_set_env_attr ($evh, $attribute, $value, $strlen)

Returns the ODBC function return value.

$r = sql_set_env_attr ($evh, $SQL_ATTR_ODBC_VERSION, $SQL_OV_ODBC2, 0);

sql_set_pos ($sth, $row, $order, $lock)

Returns the ODBC API return value.

$r = $c -> sql_set_pos ($sth, 1, $SQL_POSITION, $SQL_LOCK_NO_CHANGE);

sql_special_columns ($sth, $id_type, $catalog, $catalog_length, $schema, $schema_length, $table, $table_length, $scope, $nullable)

Returns the ODBC API return value.

$r = sql_special_columns ($sth, $SQL_ROWVER, '', 0, '', 0, 'titles', 6,
                          $SQL_SCOPE_CURROW, 0);

sql_statistics ($sth, $catalog, $catalog_length, $schema, $schema_length, $table, $table_length, $unique, $reserved)

Returns the ODBC API return value.

$r = $c -> sql_statistics ($sth, '', 0, '', 0, '', 0, 1, 1);

sql_table_privileges ($sth, $catalog, $catalog_length, $schema, $schema_length, $table, $table_length)

Returns the ODBC API return value.

$r = $c -> sql_table_privileges ($sth, '', 0, '', 0, '', 0);

sql_tables ($sth, $cat_name, $cat_name_len, $schema_name, $schema_name_len, $table_name, $table_name_len, $table_type, $table_type_len)

    Returns SQL API return value.  ODBC Level 3 drivers can specify
    wildcards.  Calls to sql_fetch and sql_get_data return a result
    set of:

    - Catalog name
    - Schema name
    - Table name
    - Table type
    - Remarks

    # Print the names of all tables of a DSN
    $r = sql_tables ($sth, '', 0, '', 0, '', 0, '' 0);
    while (1) {
	$r = $c -> sql_fetch ($sth);
	last if $r == $SQL_NO_DATA;
	($r, $text, $textlen) = 
	    $c -> sql_get_data ($sth, 3, $SQL_C_CHAR, 255);
	if ($r != $SQL_SUCCESS) {
	    ($r, $sqlstate, $native, $text, $textlen) = 
		$c -> sql_get_diag_rec ($SQL_HANDLE_STMT, $sth, 1, 255);
	    print "Error: [sql_get_data]$text\n";
	} 
	print "$text\n";
    }

VERSION INFORMATION AND CREDITS

UnixODBC::BridgeServer.pm is part of the UnixODBC package.

Version: 0.17

Written by: Robert Allan Kiesling <rkiesling@earthlink.net>

SEE ALSO

perl(1), tkdm(1), UnixODBC(3).