-- Edit the following example(s) to set the location of the Omnidex PL/Sql interface library -- The first example is for Windows. The second/default is for Sun,Linux,Aix and Tru64 UNIX. -- The third example is for HP-UX UNIX. -- -- Windows: create or replace library odx_lib as 'c:\winnt\system32\odxplora.dll'; -- Sun,Linux,Tru64,AIX: create or replace library odx_lib as '$OMNIDEX_LIBS/libodxplora.so'; -- HP-UX UNIX: create or replace library odx_lib as '$OMNIDEX_LIBS/libodxplora.sl'; CREATE OR REPLACE library odx_lib AS '$OMNIDEX_LIBS/libodxplora.so'; / show error -- create a type of rowid for odx.selectrowid CREATE OR REPLACE TYPE odx_rowid AS object ( row_id VARCHAR2(20)); / show error -- create a type of rowid table for odx.selectrowid CREATE OR REPLACE TYPE odx_rowid_set AS TABLE OF odx_rowid; / show error CREATE OR REPLACE PACKAGE odx AUTHID current_user IS -- connect to an OmniAccess environment file -- MUST be disconnect using disconnect_env when finished otherwise there will -- be memory leak -- return an instance number FUNCTION connect_env(filename IN VARCHAR2, options IN VARCHAR2 DEFAULT NULL, username IN VARCHAR2 DEFAULT NULL, pwd IN VARCHAR2 DEFAULT NULL) RETURN BINARY_INTEGER; -- check if a connection is open -- return true if connection is open FUNCTION is_connected(instance_num IN BINARY_INTEGER) RETURN BOOLEAN; -- close the connection PROCEDURE disconnect_env(instance_num IN BINARY_INTEGER, options IN VARCHAR2 DEFAULT NULL); -- open a new cursor -- MUST be closed using close_cursor when finished otherwise there will be -- memory leak -- return a cursor number FUNCTION open_cursor(instance_num IN BINARY_INTEGER, options IN VARCHAR2 DEFAULT NULL) RETURN BINARY_INTEGER; -- check if a cursor is open -- return true if cursor is open FUNCTION is_opened(cursor_num IN BINARY_INTEGER) RETURN BOOLEAN; -- close a cursor PROCEDURE close_cursor(cursor_num IN BINARY_INTEGER, options IN VARCHAR2 DEFAULT NULL); -- parse a sql statement PROCEDURE parse_sql(cursor_num IN BINARY_INTEGER, statement IN VARCHAR2, options IN VARCHAR2 DEFAULT NULL); -- bind a value to the variable specified in the parsed statement -- only support bind value for an in variable, no support for out variable -- support the following variable types: number, date, varchar2 PROCEDURE set_variable(cursor_num IN BINARY_INTEGER, name IN VARCHAR2, VALUE IN NUMBER); PROCEDURE set_variable(cursor_num IN BINARY_INTEGER, name IN VARCHAR2, VALUE IN DATE); PROCEDURE set_variable(cursor_num IN BINARY_INTEGER, name IN VARCHAR2, VALUE IN VARCHAR2); -- define column type for a particular column in the select list -- valid only on SELECT statement -- the column type is the type of the value passed in the "column" parameter -- support the following column types: number, date, varchar2 PROCEDURE set_column_type(cursor_num IN BINARY_INTEGER, position IN BINARY_INTEGER, column IN NUMBER); PROCEDURE set_column_type(cursor_num IN BINARY_INTEGER, position IN BINARY_INTEGER, column IN DATE); PROCEDURE set_column_type(cursor_num IN BINARY_INTEGER, position IN BINARY_INTEGER, column IN VARCHAR2); -- execute the sql statement -- return number of rows processed for INSERT, DELETE, and UPDATE statement -- return number of rows qualified for QUALIFY statement -- return 0 for other statements FUNCTION execute_sql(cursor_num IN BINARY_INTEGER, options VARCHAR2 DEFAULT NULL) RETURN BINARY_INTEGER; -- fetch rows -- return the number of rows actually fetched (1 or 0) -- only valid for SELECT statement FUNCTION get_row(cursor_num IN BINARY_INTEGER, options IN VARCHAR2 DEFAULT NULL) RETURN BINARY_INTEGER; -- get a value of the column in the select list from a fetch -- support the following column value types: number, date, varchar2 -- column value type must be the same as the one used in define_column PROCEDURE get_column(cursor_num IN BINARY_INTEGER, position IN BINARY_INTEGER, VALUE OUT NUMBER); PROCEDURE get_column(cursor_num IN BINARY_INTEGER, position IN BINARY_INTEGER, VALUE OUT DATE); PROCEDURE get_column(cursor_num IN BINARY_INTEGER, position IN BINARY_INTEGER, VALUE OUT VARCHAR2); -- get the last SQL function code. Use the list in OCI manual FUNCTION get_last_sql_function_code(cursor_num IN BINARY_INTEGER) RETURN BINARY_INTEGER; -- get the cummulative count of rows fetched FUNCTION get_last_row_count(cursor_num IN BINARY_INTEGER) RETURN BINARY_INTEGER; -- get the version number -- return the version number -- the formatted version is also returned in the parameter FUNCTION get_version(version OUT VARCHAR2, options IN VARCHAR2 DEFAULT NULL) RETURN BINARY_INTEGER; -- select rowid based on a where clause argument -- return 0 FUNCTION select_rowid(cursor_num IN BINARY_INTEGER, tblname IN VARCHAR2, criteria IN VARCHAR2, orderby IN VARCHAR2 DEFAULT NULL, options IN VARCHAR2 DEFAULT NULL) RETURN BINARY_INTEGER; -- fetch the rowids into a temporary table FUNCTION fetch_rowid(cursor_num IN BINARY_INTEGER, options IN VARCHAR2 DEFAULT NULL) RETURN odx_rowid_set pipelined; -- insert index only -- return 0 or an error number FUNCTION oainsertindex(instance_num IN BINARY_INTEGER, options IN VARCHAR2, tblname IN VARCHAR2, colnames IN VARCHAR2, buffer IN VARCHAR2, rowid_buf IN VARCHAR2) RETURN BINARY_INTEGER; -- update index only -- return 0 or an error number FUNCTION oaupdateindex(instance_num IN BINARY_INTEGER, options IN VARCHAR2, tblname IN VARCHAR2, colnames IN VARCHAR2, before_buffer IN VARCHAR2, before_rowid IN VARCHAR2, after_buffer IN VARCHAR2, after_rowid IN VARCHAR2) RETURN BINARY_INTEGER; -- delete index only -- return 0 or an error number FUNCTION oadeleteindex(instance_num IN BINARY_INTEGER, options IN VARCHAR2, tblname IN VARCHAR2, colnames IN VARCHAR2, buffer IN VARCHAR2, rowid_buf IN VARCHAR2) RETURN BINARY_INTEGER; -- set column value for insert PROCEDURE insert_column(instance_num IN BINARY_INTEGER, tblname IN VARCHAR2, colname IN VARCHAR2, buffer IN VARCHAR2); -- insert row PROCEDURE insert_row(instance_num IN BINARY_INTEGER, tblname IN VARCHAR2, options IN VARCHAR2 DEFAULT NULL); -- insert index only PROCEDURE insert_index(instance_num IN BINARY_INTEGER, tblname IN VARCHAR2, rowid_buf IN VARCHAR2, options IN VARCHAR2 DEFAULT NULL); -- set column value for update PROCEDURE update_column(instance_num IN BINARY_INTEGER, tblname IN VARCHAR2, colname IN VARCHAR2, before_buffer IN VARCHAR2, after_buffer IN VARCHAR2); -- update row PROCEDURE update_row(instance_num IN BINARY_INTEGER, tblname IN VARCHAR2, rowid_buf IN VARCHAR2, options IN VARCHAR2 DEFAULT NULL); -- update index only PROCEDURE update_index(instance_num IN BINARY_INTEGER, tblname IN VARCHAR2, before_rowid IN VARCHAR2, after_rowid IN VARCHAR2, options IN VARCHAR2 DEFAULT NULL); -- set column value for delete PROCEDURE delete_column(instance_num IN BINARY_INTEGER, tblname IN VARCHAR2, colname IN VARCHAR2, buffer IN VARCHAR2); -- delete row PROCEDURE delete_row(instance_num IN BINARY_INTEGER, tblname IN VARCHAR2, rowid_buf IN VARCHAR2, options IN VARCHAR2 DEFAULT NULL); -- delete index only PROCEDURE delete_index(instance_num IN BINARY_INTEGER, tblname IN VARCHAR2, rowid_buf IN VARCHAR2, options IN VARCHAR2 DEFAULT NULL); END; / show errors CREATE OR REPLACE PACKAGE BODY odx IS FUNCTION connect_env_c(filename IN VARCHAR2, options IN VARCHAR2, username IN VARCHAR2, pwd IN VARCHAR2) RETURN BINARY_INTEGER AS language c name "odxplora_connect" library odx_lib WITH context parameters(context, filename, filename INDICATOR, filename LENGTH, options, options INDICATOR, options LENGTH, username, username INDICATOR, username LENGTH, pwd, pwd INDICATOR, pwd LENGTH, RETURN); FUNCTION connect_env(filename IN VARCHAR2, options IN VARCHAR2 DEFAULT NULL, username IN VARCHAR2 DEFAULT NULL, pwd IN VARCHAR2 DEFAULT NULL) RETURN BINARY_INTEGER AS BEGIN RETURN connect_env_c(filename, options, username, pwd); END; FUNCTION is_connected(instance_num IN BINARY_INTEGER) RETURN BOOLEAN AS language c name "odxplora_is_connected" library odx_lib parameters(instance_num, instance_num INDICATOR, RETURN); PROCEDURE disconnect_env_c(instance_num IN BINARY_INTEGER, options IN VARCHAR2) AS language c name "odxplora_disconnect" library odx_lib WITH context parameters(context, instance_num, instance_num INDICATOR, options, options INDICATOR, options LENGTH); PROCEDURE disconnect_env(instance_num IN BINARY_INTEGER, options IN VARCHAR2 DEFAULT NULL) AS BEGIN disconnect_env_c(instance_num, options); END; FUNCTION open_cursor_c(instance_num IN BINARY_INTEGER, options IN VARCHAR2) RETURN BINARY_INTEGER AS language c name "odxplora_opencursor" library odx_lib WITH context parameters(context, instance_num, instance_num INDICATOR, options, options INDICATOR, options LENGTH, RETURN); FUNCTION open_cursor(instance_num IN BINARY_INTEGER, options IN VARCHAR2 DEFAULT NULL) RETURN BINARY_INTEGER AS BEGIN RETURN open_cursor_c(instance_num, options); END; FUNCTION is_opened(cursor_num IN BINARY_INTEGER) RETURN BOOLEAN AS language c name "odxplora_is_opened" library odx_lib parameters(cursor_num, cursor_num INDICATOR, RETURN); PROCEDURE close_cursor_c(cursor_num IN BINARY_INTEGER, options IN VARCHAR2) AS language c name "odxplora_closecursor" library odx_lib WITH context parameters(context, cursor_num, cursor_num INDICATOR, options, options INDICATOR, options LENGTH); PROCEDURE close_cursor(cursor_num IN BINARY_INTEGER, options IN VARCHAR2 DEFAULT NULL) AS BEGIN close_cursor_c(cursor_num, options); END; PROCEDURE parse_sql_c(cursor_num IN BINARY_INTEGER, statement IN VARCHAR2, options IN VARCHAR2) AS language c name "odxplora_parse_sql" library odx_lib WITH context parameters(context, cursor_num, cursor_num INDICATOR, statement, statement INDICATOR, statement LENGTH, options, options INDICATOR, options LENGTH); PROCEDURE parse_sql(cursor_num IN BINARY_INTEGER, statement IN VARCHAR2, options IN VARCHAR2 DEFAULT NULL) AS BEGIN parse_sql_c(cursor_num, statement, options); END; PROCEDURE set_variable(cursor_num IN BINARY_INTEGER, name IN VARCHAR2, VALUE IN NUMBER) AS language c name "odxplora_setvariable_num" library odx_lib WITH context parameters(context, cursor_num, cursor_num INDICATOR, name, name INDICATOR, name LENGTH, VALUE, VALUE INDICATOR); PROCEDURE set_variable(cursor_num IN BINARY_INTEGER, name IN VARCHAR2, VALUE IN DATE) AS language c name "odxplora_setvariable_date" library odx_lib WITH context parameters(context, cursor_num, cursor_num INDICATOR, name, name INDICATOR, name LENGTH, VALUE, VALUE INDICATOR); PROCEDURE set_variable(cursor_num IN BINARY_INTEGER, name IN VARCHAR2, VALUE IN VARCHAR2) AS language c name "odxplora_setvariable_char" library odx_lib WITH context parameters(context, cursor_num, cursor_num INDICATOR, name, name INDICATOR, name LENGTH, VALUE, VALUE INDICATOR, VALUE LENGTH); PROCEDURE set_column_type(cursor_num IN BINARY_INTEGER, position IN BINARY_INTEGER, column IN NUMBER) AS language c name "odxplora_setcoltype_num" library odx_lib WITH context parameters(context, cursor_num, cursor_num INDICATOR, position, position INDICATOR, column, column INDICATOR); PROCEDURE set_column_type(cursor_num IN BINARY_INTEGER, position IN BINARY_INTEGER, column IN DATE) AS language c name "odxplora_setcoltype_date" library odx_lib WITH context parameters(context, cursor_num, cursor_num INDICATOR, position, position INDICATOR, column, column INDICATOR); PROCEDURE set_column_type(cursor_num IN BINARY_INTEGER, position IN BINARY_INTEGER, column IN VARCHAR2) AS language c name "odxplora_setcoltype_char" library odx_lib WITH context parameters(context, cursor_num, cursor_num INDICATOR, position, position INDICATOR, column, column INDICATOR, column LENGTH); FUNCTION execute_sql_c(cursor_num IN BINARY_INTEGER, options VARCHAR2) RETURN BINARY_INTEGER AS language c name "odxplora_execsql" library odx_lib WITH context parameters(context, cursor_num, cursor_num INDICATOR, options, options INDICATOR, options LENGTH, RETURN); FUNCTION execute_sql(cursor_num IN BINARY_INTEGER, options VARCHAR2 DEFAULT NULL) RETURN BINARY_INTEGER AS BEGIN RETURN execute_sql_c(cursor_num, options); END; FUNCTION get_row_c(cursor_num IN BINARY_INTEGER, options IN VARCHAR2) RETURN BINARY_INTEGER AS language c name "odxplora_getrow" library odx_lib WITH context parameters(context, cursor_num, cursor_num INDICATOR, options, options INDICATOR, options LENGTH, RETURN); FUNCTION get_row(cursor_num IN BINARY_INTEGER, options IN VARCHAR2 DEFAULT NULL) RETURN BINARY_INTEGER AS BEGIN RETURN get_row_c(cursor_num, options); END; PROCEDURE get_column(cursor_num IN BINARY_INTEGER, position IN BINARY_INTEGER, VALUE OUT NUMBER) AS language c name "odxplora_getcolumn_num" library odx_lib WITH context parameters(context, cursor_num, cursor_num INDICATOR, position, position INDICATOR, VALUE, VALUE INDICATOR); PROCEDURE get_column(cursor_num IN BINARY_INTEGER, position IN BINARY_INTEGER, VALUE OUT DATE) AS language c name "odxplora_getcolumn_date" library odx_lib WITH context parameters(context, cursor_num, cursor_num INDICATOR, position, position INDICATOR, VALUE, VALUE INDICATOR); PROCEDURE get_column(cursor_num IN BINARY_INTEGER, position IN BINARY_INTEGER, VALUE OUT VARCHAR2) AS language c name "odxplora_getcolumn_char" library odx_lib WITH context parameters(context, cursor_num, cursor_num INDICATOR, position, position INDICATOR, VALUE, VALUE INDICATOR, VALUE LENGTH, VALUE maxlen); FUNCTION get_last_sql_function_code(cursor_num IN BINARY_INTEGER) RETURN BINARY_INTEGER AS language c name "odxplora_last_sql_function" library odx_lib WITH context parameters(context, cursor_num, cursor_num INDICATOR); FUNCTION get_last_row_count(cursor_num IN BINARY_INTEGER) RETURN BINARY_INTEGER AS language c name "odxplora_last_row_count" library odx_lib WITH context parameters(context, cursor_num, cursor_num INDICATOR); FUNCTION get_version_c(version OUT VARCHAR2, options IN VARCHAR2) RETURN BINARY_INTEGER AS language c name "odxplora_getversion" library odx_lib parameters(version, version INDICATOR, version LENGTH, version maxlen, options, options INDICATOR, options LENGTH, RETURN); FUNCTION get_version(version OUT VARCHAR2, options IN VARCHAR2 DEFAULT NULL) RETURN BINARY_INTEGER AS BEGIN RETURN get_version_c(version, options); END; FUNCTION select_rowid(cursor_num IN BINARY_INTEGER, tblname IN VARCHAR2, criteria IN VARCHAR2, orderby IN VARCHAR2, options IN VARCHAR2) RETURN BINARY_INTEGER AS out_rec odx_rowid := odx_rowid(' '); BEGIN IF criteria IS NOT NULL THEN parse_sql(cursor_num, 'select $rowid from ' || tblname || ' where ' || criteria || ' ' || orderby, options); ELSE parse_sql(cursor_num, 'select $rowid from ' || tblname || ' ' || orderby, options); END IF; set_column_type(cursor_num, 1, out_rec.row_id); RETURN execute_sql(cursor_num); END; FUNCTION fetch_rowid_c(cursor_num IN BINARY_INTEGER, COUNT IN BINARY_INTEGER, buffer OUT VARCHAR2, options IN VARCHAR2) RETURN BINARY_INTEGER AS language c name "odxplora_fetch_rowid" library odx_lib WITH context parameters(context, cursor_num, cursor_num INDICATOR, COUNT, COUNT INDICATOR, buffer, buffer INDICATOR, buffer LENGTH, buffer maxlen, options, options INDICATOR, options LENGTH, RETURN); FUNCTION fetch_rowid(cursor_num IN BINARY_INTEGER, options IN VARCHAR2) RETURN odx_rowid_set pipelined AS out_rec odx_rowid := odx_rowid(NULL); rid_buf VARCHAR2(32000); total_rid INTEGER; rid_count INTEGER; rid_offset INTEGER; BEGIN LOOP total_rid := fetch_rowid_c(cursor_num, 1600, rid_buf, options); EXIT WHEN total_rid = 0; rid_count := 0; rid_offset := 1; WHILE rid_count < total_rid LOOP out_rec.row_id := SUBSTR(rid_buf, rid_offset, 18); pipe ROW(out_rec); rid_offset := rid_offset + 20; rid_count := rid_count + 1; END LOOP; END LOOP; RETURN; END; FUNCTION oainsertindex(instance_num IN BINARY_INTEGER, options IN VARCHAR2, tblname IN VARCHAR2, colnames IN VARCHAR2, buffer IN VARCHAR2, rowid_buf IN VARCHAR2) RETURN BINARY_INTEGER AS language c name "odxplora_oainsertindex" library odx_lib WITH context parameters( context, instance_num, instance_num INDICATOR, options, options INDICATOR, options LENGTH, tblname, tblname INDICATOR, tblname LENGTH, colnames, colnames INDICATOR, colnames LENGTH, buffer, buffer INDICATOR, buffer LENGTH, rowid_buf, rowid_buf INDICATOR, rowid_buf LENGTH, RETURN); FUNCTION oaupdateindex(instance_num IN BINARY_INTEGER, options IN VARCHAR2, tblname IN VARCHAR2, colnames IN VARCHAR2, before_buffer IN VARCHAR2, before_rowid IN VARCHAR2, after_buffer IN VARCHAR2, after_rowid IN VARCHAR2) RETURN BINARY_INTEGER AS language c name "odxplora_oaupdateindex" library odx_lib WITH context parameters(context, instance_num, instance_num INDICATOR, options, options INDICATOR, options LENGTH, tblname, tblname INDICATOR, tblname LENGTH, colnames, colnames INDICATOR, colnames LENGTH, before_buffer, before_buffer INDICATOR, before_buffer LENGTH, before_rowid, before_rowid INDICATOR, before_rowid LENGTH, after_buffer, after_buffer INDICATOR, after_buffer LENGTH, after_rowid, after_rowid INDICATOR, after_rowid LENGTH, RETURN); FUNCTION oadeleteindex(instance_num IN BINARY_INTEGER, options IN VARCHAR2, tblname IN VARCHAR2, colnames IN VARCHAR2, buffer IN VARCHAR2, rowid_buf IN VARCHAR2) RETURN BINARY_INTEGER AS language c name "odxplora_oadeleteindex" library odx_lib WITH context parameters( context, instance_num, instance_num INDICATOR, options, options INDICATOR, options LENGTH, tblname, tblname INDICATOR, tblname LENGTH, colnames, colnames INDICATOR, colnames LENGTH, buffer, buffer INDICATOR, buffer LENGTH, rowid_buf, rowid_buf INDICATOR, rowid_buf LENGTH, RETURN); PROCEDURE insert_column(instance_num IN BINARY_INTEGER, tblname IN VARCHAR2, colname IN VARCHAR2, buffer IN VARCHAR2) AS language c name "odxplora_insert_column" library odx_lib WITH context parameters( context, instance_num, instance_num INDICATOR, tblname, tblname INDICATOR, tblname LENGTH, colname, colname INDICATOR, colname LENGTH, buffer, buffer INDICATOR, buffer LENGTH); PROCEDURE insert_row_c(instance_num IN BINARY_INTEGER, tblname IN VARCHAR2, options IN VARCHAR2) AS language c name "odxplora_insert_row" library odx_lib WITH context parameters(context, instance_num, instance_num INDICATOR, tblname, tblname INDICATOR, tblname LENGTH, options, options INDICATOR, options LENGTH); PROCEDURE insert_row(instance_num IN BINARY_INTEGER, tblname IN VARCHAR2, options IN VARCHAR2 DEFAULT NULL) AS BEGIN insert_row_c(instance_num, tblname, options); END; PROCEDURE insert_index_c(instance_num IN BINARY_INTEGER, tblname IN VARCHAR2, rowid_buf IN VARCHAR2, options IN VARCHAR2) AS language c name "odxplora_insert_index" library odx_lib WITH context parameters( context, instance_num, instance_num INDICATOR, tblname, tblname INDICATOR, tblname LENGTH, rowid_buf, rowid_buf INDICATOR, rowid_buf LENGTH, options, options INDICATOR, options LENGTH); PROCEDURE insert_index(instance_num IN BINARY_INTEGER, tblname IN VARCHAR2, rowid_buf IN VARCHAR2, options IN VARCHAR2 DEFAULT NULL) AS BEGIN insert_index_c(instance_num, tblname, rowid_buf, options); END; PROCEDURE update_column(instance_num IN BINARY_INTEGER, tblname IN VARCHAR2, colname IN VARCHAR2, before_buffer IN VARCHAR2, after_buffer IN VARCHAR2) AS language c name "odxplora_update_column" library odx_lib WITH context parameters(context, instance_num, instance_num INDICATOR, tblname, tblname INDICATOR, tblname LENGTH, colname, colname INDICATOR, colname LENGTH, before_buffer, before_buffer INDICATOR, before_buffer LENGTH, after_buffer, after_buffer INDICATOR, after_buffer LENGTH); PROCEDURE update_row_c(instance_num IN BINARY_INTEGER, tblname IN VARCHAR2, rowid_buf IN VARCHAR2, options IN VARCHAR2) AS language c name "odxplora_update_row" library odx_lib WITH context parameters(context, instance_num, instance_num INDICATOR, tblname, tblname INDICATOR, tblname LENGTH, rowid_buf, rowid_buf INDICATOR, rowid_buf LENGTH, options, options INDICATOR, options LENGTH); PROCEDURE update_row(instance_num IN BINARY_INTEGER, tblname IN VARCHAR2, rowid_buf IN VARCHAR2, options IN VARCHAR2 DEFAULT NULL) AS BEGIN update_row_c(instance_Num, tblname, rowid_buf, options); END; PROCEDURE update_index_c(instance_num IN BINARY_INTEGER, tblname IN VARCHAR2, before_rowid IN VARCHAR2, after_rowid IN VARCHAR2, options IN VARCHAR2) AS language c name "odxplora_update_index" library odx_lib WITH context parameters(context, instance_num, instance_num INDICATOR, tblname, tblname INDICATOR, tblname LENGTH, before_rowid, before_rowid INDICATOR, before_rowid LENGTH, after_rowid, after_rowid INDICATOR, after_rowid LENGTH, options, options INDICATOR, options LENGTH); PROCEDURE update_index(instance_num IN BINARY_INTEGER, tblname IN VARCHAR2, before_rowid IN VARCHAR2, after_rowid IN VARCHAR2, options IN VARCHAR2 DEFAULT NULL) AS BEGIN update_index_c(instance_num, tblname, before_rowid, after_rowid, options); END; PROCEDURE delete_column(instance_num IN BINARY_INTEGER, tblname IN VARCHAR2, colname IN VARCHAR2, buffer IN VARCHAR2) AS language c name "odxplora_delete_column" library odx_lib WITH context parameters( context, instance_num, instance_num INDICATOR, tblname, tblname INDICATOR, tblname LENGTH, colname, colname INDICATOR, colname LENGTH, buffer, buffer INDICATOR, buffer LENGTH); PROCEDURE delete_row_c(instance_num IN BINARY_INTEGER, tblname IN VARCHAR2, rowid_buf IN VARCHAR2, options IN VARCHAR2) AS language c name "odxplora_delete_row" library odx_lib WITH context parameters(context, instance_num, instance_num INDICATOR, tblname, tblname INDICATOR, tblname LENGTH, rowid_buf, rowid_buf INDICATOR, rowid_buf LENGTH, options, options INDICATOR, options LENGTH); PROCEDURE delete_row(instance_num IN BINARY_INTEGER, tblname IN VARCHAR2, rowid_buf IN VARCHAR2, options IN VARCHAR2 DEFAULT NULL) AS BEGIN delete_row_c(instance_num, tblname, rowid_buf, options); END; PROCEDURE delete_index_c(instance_num IN BINARY_INTEGER, tblname IN VARCHAR2, rowid_buf IN VARCHAR2, options IN VARCHAR2) AS language c name "odxplora_delete_index" library odx_lib WITH context parameters( context, instance_num, instance_num INDICATOR, tblname, tblname INDICATOR, tblname LENGTH, rowid_buf, rowid_buf INDICATOR, rowid_buf LENGTH, options, options INDICATOR, options LENGTH); PROCEDURE delete_index(instance_num IN BINARY_INTEGER, tblname IN VARCHAR2, rowid_buf IN VARCHAR2, options IN VARCHAR2 DEFAULT NULL) AS BEGIN delete_index_c(instance_num, tblname, rowid_buf, options); END; END; / show errors grant EXECUTE ON odx TO PUBLIC; CREATE OR REPLACE PUBLIC SYNONYM odx FOR odx; SET serveroutput ON DECLARE oaversion VARCHAR2(40); version VARCHAR2(40); ignore NUMBER; BEGIN ignore := odx.get_version(version); ignore := odx.get_version(oaversion, 'OA'); DBMS_OUTPUT.put_line( 'OmniAccess Interface to PL/SQL has been successfully installed'); DBMS_OUTPUT.new_line; DBMS_OUTPUT.put_line( 'OmniAccess Version: ' || oaversion); DBMS_OUTPUT.put_line( 'Interface Version: ' || version); DBMS_OUTPUT.new_line; END; /