DRAFT

Oracle Stored Procedure Installation code

-- 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;
/
 
Back to top
dev/dbprocs/oracle/install.txt ยท Last modified: 2016/06/28 22:38 (external edit)