/* * VERSION: 12.4.0 * LAST MODIFIED TIME: 2024-02-19 */ ----����Ա���߰�------------------ CREATE OR REPLACE PACKAGE SYSDBA.DBMS_DBA IS PROCEDURE KILL_TRANS(NODEID INTEGER,TRANID BIGINT); PROCEDURE KILL_SESSION(NODEID INTEGER,SESSID INTEGER); PROCEDURE KILL_SESSION_TRANS(NODEID INTEGER,SESSID INTEGER); END SYSDBA.DBMS_DBA; / CREATE OR REPLACE PACKAGE BODY SYSDBA.DBMS_DBA IS PROCEDURE KILL_TRANS(NODEID INTEGER,TRANID BIGINT) IS LANGUAGE "C" NAME "BLDIN_KILL_TRANS"; PROCEDURE KILL_SESSION(NODEID INTEGER,SESSID INTEGER) IS LANGUAGE "C" NAME "BLDIN_KILL_SESSION"; PROCEDURE KILL_SESSION_TRANS(NODEID INTEGER,SESSID INTEGER) IS LANGUAGE "C" NAME "BLDIN_KILL_SESSION_TRANS"; END SYSDBA.DBMS_DBA; / /***********����DBMS_OUTPUT��*****************************/ CREATE OR REPLACE PACKAGE SYSDBA.DBMS_OUTPUT IS PROCEDURE PUT_LINE(str VARCHAR); END SYSDBA.DBMS_OUTPUT; / ----���� CREATE OR REPLACE PACKAGE BODY SYSDBA.DBMS_OUTPUT IS PROCEDURE PUT_LINE(str VARCHAR) IS BEGIN send_msg(str); END; END SYSDBA.DBMS_OUTPUT; / /***********����DBMS_INFO��(���ڲ�ѯϵͳ��Ϣ)***************/ ----��ͷ CREATE PACKAGE SYSDBA.DBMS_INFO IS SUBTYPE FileInfo IS RECORD(IS_DIR BOOLEAN,DB_PATH VARCHAR(256),OS_PATH VARCHAR(256)); SUBTYPE FInfoTab IS TABLE OF FileInfo; FUNCTION FILE_LIST(_dir VARCHAR) RETURN FInfoTab; END SYSDBA.DBMS_INFO; / ----���� CREATE PACKAGE BODY SYSDBA.DBMS_INFO IS FUNCTION FILE_LIST(_dir VARCHAR) RETURN FInfoTab IS LANGUAGE "C" NAME "BLDIN_FILE_LIST"; END SYSDBA.DBMS_INFO; / ----�������------------------ CREATE OR REPLACE PACKAGE SYSDBA.DBMS_TEST IS FUNCTION TEST_PING_PONG1(TARG_NID INTEGER,PACK_NUM INTEGER) RETURN INTEGER; FUNCTION TEST_PING_PONG2(TARG_NID INTEGER,PACK_SIZE INTEGER,PACK_NUM INTEGER) RETURN INTEGER; FUNCTION TEST_MSG_SEND1(TARG_NID INTEGER,PACK_SIZE INTEGER,PACK_NUM INTEGER) RETURN INTEGER; FUNCTION TEST_MSG_SEND2(TARG_NID INTEGER,PACK_SIZE INTEGER,PACK_NUM INTEGER) RETURN INTEGER; FUNCTION TEST_RPC_SEND(TARG_NID INTEGER,SEND_SIZE INTEGER) RETURN INTEGER; END SYSDBA.DBMS_TEST ; / CREATE OR REPLACE PACKAGE BODY SYSDBA.DBMS_TEST IS FUNCTION TEST_PING_PONG1(TARG_NID INTEGER,PACK_NUM INTEGER) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_TEST_PING_PONG1"; FUNCTION TEST_PING_PONG2(TARG_NID INTEGER,PACK_SIZE INTEGER,PACK_NUM INTEGER) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_TEST_PING_PONG2"; FUNCTION TEST_MSG_SEND1(TARG_NID INTEGER,PACK_SIZE INTEGER,PACK_NUM INTEGER) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_TEST_MSG_SEND1"; FUNCTION TEST_MSG_SEND2(TARG_NID INTEGER,PACK_SIZE INTEGER,PACK_NUM INTEGER) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_TEST_MSG_SEND2"; FUNCTION TEST_RPC_SEND(TARG_NID INTEGER,SEND_SIZE INTEGER) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_TEST_RPC_SEND"; END SYSDBA.DBMS_TEST ; / -----ͳ����Ϣ���ð�------------- CREATE OR REPLACE PACKAGE SYSDBA.DBMS_STAT IS PROCEDURE SET_STAT_INFO(TABLE_NAME VARCHAR,FIELD_NAME VARCHAR,MAX_VAL VARCHAR,MIN_VAL VARCHAR,REPET_RATE DOUBLE,DISPERSION DOUBLE,NON_NULL_RATE DOUBLE DEFAULT 0.0); PROCEDURE ANALYZE_TABLE(TABLE_NAME VARCHAR,FIELD_NAME VARCHAR,SAMPLE_RATE INTEGER,HSITOGRAM_NUM INTEGER); PROCEDURE SET_ANALYZE_SCHEME(TABLE_NAME VARCHAR,SCHE_NAME VARCHAR,ENABLE BOOL); PROCEDURE SET_ANALYZE_PARAM(TABLE_NAME VARCHAR,MODE TINYINT,THRESHOLD TINYINT,LEVEL TINYINT); PROCEDURE SET_ANALYZE_OPTIMIZE(TABLE_NAME VARCHAR,PERIOD SMALLINT,MODE TINYINT); PROCEDURE SET_ANALYZE_COLUMNS(TABLE_NAME VARCHAR,FIELD_NAME VARCHAR,STATUS TINYINT); FUNCTION GET_STAT_INFO(TABLE_NAME VARCHAR) RETURN VARCHAR; END SYSDBA.DBMS_STAT ; / CREATE OR REPLACE PACKAGE BODY SYSDBA.DBMS_STAT IS PROCEDURE SET_STAT_INFO(TABLE_NAME VARCHAR,FIELD_NAME VARCHAR, MAX_VAL VARCHAR,MIN_VAL VARCHAR,REPET_RATE DOUBLE,DISPERSION DOUBLE,NON_NULL_RATE DOUBLE DEFAULT 0.0) IS LANGUAGE "C" NAME "BLDIN_SET_STAT_INFO"; PROCEDURE ANALYZE_TABLE(TABLE_NAME VARCHAR,FIELD_NAME VARCHAR,SAMPLE_RATE INTEGER,HSITOGRAM_NUM INTEGER) IS LANGUAGE "C" NAME "BLDIN_ANALYZE_TABLE"; PROCEDURE SET_ANALYZE_SCHEME(TABLE_NAME VARCHAR,SCHE_NAME VARCHAR,ENABLE BOOL) IS LANGUAGE "C" NAME "BLDIN_SET_ANALYZE_SCHEME"; PROCEDURE SET_ANALYZE_PARAM(TABLE_NAME VARCHAR,MODE TINYINT,THRESHOLD TINYINT,LEVEL TINYINT) IS LANGUAGE "C" NAME "BLDIN_SET_ANALYZE_PARAM"; PROCEDURE SET_ANALYZE_OPTIMIZE(TABLE_NAME VARCHAR,PERIOD SMALLINT,OPTI_MODE TINYINT) IS LANGUAGE "C" NAME "BLDIN_SET_ANALYZE_OPTIMIZE"; PROCEDURE SET_ANALYZE_COLUMNS(TABLE_NAME VARCHAR,FIELD_NAME VARCHAR,STATUS TINYINT) IS LANGUAGE "C" NAME "BLDIN_SET_ANALYZE_COLUMNS"; FUNCTION GET_STAT_INFO(TABLE_NAME VARCHAR) RETURN VARCHAR IS LANGUAGE "C" NAME "BLDIN_GET_STAT_INFO"; END SYSDBA.DBMS_STAT ; / ----ϵͳ�������ʹ������ʽ���ٵ������ݣ���Ҫ���������Ҫ�ֶ���������------- CREATE OR REPLACE PACKAGE SYSDBA.DBMS_IMPORT IS /* �зָ�����ʽ���ݵ��� */ FUNCTION IMPORT_TABLE_FROM_TXT(TABLE_NAME VARCHAR, /* ���� */ MODE INTEGER, /* ��ģʽ 1:append 2:replace �쳣ֵ��append*/ FLD_SEPARATOR VARCHAR, /* �зָ�������֧�ֵ��ַ��� */ REINDEX BOOL) /* ����δʹ�� */ RETURN BIGINT; /* ���ص������� */ /* ����ָʾ��ʽ���ݵ��� */ FUNCTION IMPORT_TABLE_FROM_NET(TABLE_NAME VARCHAR, /* ���� */ MODE INTEGER, /* ��ģʽ 1:append 2:replace �쳣ֵ��append*/ REINDEX BOOL) /* ����δʹ�� */ RETURN BIGINT; /* ���ص������� */ END SYSDBA.DBMS_TEST; / CREATE OR REPLACE PACKAGE BODY SYSDBA.DBMS_IMPORT IS FUNCTION IMPORT_TABLE_FROM_TXT(TABLE_NAME VARCHAR,MODE INTEGER,FLD_SEPARATOR VARCHAR,REINDEX BOOL) RETURN BIGINT IS LANGUAGE "C" NAME "BLDIN_IMPORT_TABLE_FROM_TXT"; FUNCTION IMPORT_TABLE_FROM_NET(TABLE_NAME VARCHAR,MODE INTEGER,REINDEX BOOL) RETURN BIGINT IS LANGUAGE "C" NAME "BLDIN_IMPORT_TABLE_FROM_NET"; END SYSDBA.DBMS_IMPORT ; / /***********����DBMS_SCHEDULER��(���ڲ�ѯϵͳ��Ϣ)***************/ ----��ͷ CREATE OR REPLACE PACKAGE SYSDBA.DBMS_SCHEDULER AUTHID CURRENT_USER IS PROCEDURE CREATE_JOB ( job_name IN VARCHAR2, job_type IN VARCHAR2, job_action IN VARCHAR2, number_of_arguments IN PLS_INTEGER DEFAULT 0, start_date IN TIMESTAMP DEFAULT NULL, repeat_interval IN VARCHAR2 DEFAULT NULL, end_date IN TIMESTAMP DEFAULT NULL, job_class IN VARCHAR2 DEFAULT 'DEFAULT_JOB_CLASS', enabled IN BOOLEAN DEFAULT FALSE, auto_drop IN BOOLEAN DEFAULT TRUE, comments IN VARCHAR2 DEFAULT NULL); PROCEDURE SET_ATTRIBUTE ( name IN VARCHAR2, attribute IN VARCHAR2, value IN VARCHAR2); PROCEDURE SET_ATTRIBUTE ( name IN VARCHAR2, attribute IN VARCHAR2, value IN TIMESTAMP); PROCEDURE SET_ATTRIBUTE ( name IN VARCHAR2, attribute IN VARCHAR2, value IN PLS_INTEGER); PROCEDURE SET_ATTRIBUTE ( name IN VARCHAR2, attribute IN VARCHAR2, value IN BOOLEAN); PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_position IN PLS_INTEGER, argument_value IN VARCHAR2); PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_name IN VARCHAR2, argument_value IN VARCHAR2); PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_position IN PLS_INTEGER, argument_value IN TINYINT); PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_name IN VARCHAR2, argument_value IN TINYINT); PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_position IN PLS_INTEGER, argument_value IN SMALLINT); PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_name IN VARCHAR2, argument_value IN SMALLINT); PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_position IN PLS_INTEGER, argument_value IN INTEGER); PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_name IN VARCHAR2, argument_value IN INTEGER); PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_position IN PLS_INTEGER, argument_value IN BIGINT); PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_name IN VARCHAR2, argument_value IN BIGINT); PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_position IN PLS_INTEGER, argument_value IN FLOAT); PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_name IN VARCHAR2, argument_value IN FLOAT); PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_position IN PLS_INTEGER, argument_value IN DOUBLE); PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_name IN VARCHAR2, argument_value IN DOUBLE); PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_position IN PLS_INTEGER, argument_value IN NUMERIC); PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_name IN VARCHAR2, argument_value IN NUMERIC); PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_position IN PLS_INTEGER, argument_value IN BOOLEAN); PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_name IN VARCHAR2, argument_value IN BOOLEAN); PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_position IN PLS_INTEGER, argument_value IN TIME); PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_name IN VARCHAR2, argument_value IN TIME); PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_position IN PLS_INTEGER, argument_value IN DATE); PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_name IN VARCHAR2, argument_value IN DATE); PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_position IN PLS_INTEGER, argument_value IN DATETIME); PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_name IN VARCHAR2, argument_value IN DATETIME); PROCEDURE RUN_JOB ( job_name IN VARCHAR2, use_current_session IN BOOLEAN DEFAULT TRUE); PROCEDURE ENABLE ( name IN VARCHAR2); PROCEDURE DISABLE ( name IN VARCHAR2, force IN BOOLEAN DEFAULT FALSE); PROCEDURE DROP_JOB ( job_name IN VARCHAR2, force IN BOOLEAN DEFAULT FALSE); FUNCTION JOB_NEXT_RUNTIME( job_name IN VARCHAR2, last_rt IN DATETIME) RETURN DATETIME; FUNCTION NEXT_RUNTIME( repeat_interval IN VARCHAR2, last_rt IN DATETIME) RETURN DATETIME; END SYSDBA.DBMS_SCHEDULER; / ----���� CREATE OR REPLACE PACKAGE BODY SYSDBA.DBMS_SCHEDULER IS PROCEDURE CREATE_JOB ( job_name IN VARCHAR2, job_type IN VARCHAR2, job_action IN VARCHAR2, number_of_arguments IN PLS_INTEGER DEFAULT 0, start_date IN TIMESTAMP DEFAULT NULL, repeat_interval IN VARCHAR2 DEFAULT NULL, end_date IN TIMESTAMP DEFAULT NULL, job_class IN VARCHAR2 DEFAULT 'DEFAULT_JOB_CLASS', enabled IN BOOLEAN DEFAULT FALSE, auto_drop IN BOOLEAN DEFAULT TRUE, comments IN VARCHAR2 DEFAULT NULL) IS LANGUAGE "C" NAME "BLDIN_CREATE_JOB"; PROCEDURE SET_ATTRIBUTE ( name IN VARCHAR2, attribute IN VARCHAR2, value IN VARCHAR2) IS LANGUAGE "C" NAME "BLDIN_SET_SET_STR_ATTRIBUTE"; PROCEDURE SET_ATTRIBUTE ( name IN VARCHAR2, attribute IN VARCHAR2, value IN TIMESTAMP) IS LANGUAGE "C" NAME "BLDIN_SET_SET_DT_ATTRIBUTE"; PROCEDURE SET_ATTRIBUTE ( name IN VARCHAR2, attribute IN VARCHAR2, value IN PLS_INTEGER) IS LANGUAGE "C" NAME "BLDIN_SET_SET_I4_ATTRIBUTE"; PROCEDURE SET_ATTRIBUTE ( name IN VARCHAR2, attribute IN VARCHAR2, value IN BOOLEAN) IS LANGUAGE "C" NAME "BLDIN_SET_SET_BOOL_ATTRIBUTE"; PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_position IN PLS_INTEGER, argument_value IN VARCHAR2) IS LANGUAGE "C" NAME "BLDIN_SET_JOB_STR_ARG_BY_ORD"; PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_name IN VARCHAR2, argument_value IN VARCHAR2) IS LANGUAGE "C" NAME "BLDIN_SET_JOB_STR_ARG_BY_NAME"; PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_position IN PLS_INTEGER, argument_value IN INTEGER) IS LANGUAGE "C" NAME "BLDIN_SET_JOB_I4_ARG_BY_ORD"; PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_name IN VARCHAR2, argument_value IN INTEGER) IS LANGUAGE "C" NAME "BLDIN_SET_JOB_I4_ARG_BY_NAME"; PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_position IN PLS_INTEGER, argument_value IN TINYINT) IS LANGUAGE "C" NAME "BLDIN_SET_JOB_I1_ARG_BY_ORD"; PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_name IN VARCHAR2, argument_value IN TINYINT) IS LANGUAGE "C" NAME "BLDIN_SET_JOB_I1_ARG_BY_NAME"; PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_position IN PLS_INTEGER, argument_value IN SMALLINT) IS LANGUAGE "C" NAME "BLDIN_SET_JOB_I2_ARG_BY_ORD"; PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_name IN VARCHAR2, argument_value IN SMALLINT) IS LANGUAGE "C" NAME "BLDIN_SET_JOB_I2_ARG_BY_NAME"; PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_position IN PLS_INTEGER, argument_value IN BIGINT) IS LANGUAGE "C" NAME "BLDIN_SET_JOB_I8_ARG_BY_ORD"; PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_name IN VARCHAR2, argument_value IN BIGINT) IS LANGUAGE "C" NAME "BLDIN_SET_JOB_I8_ARG_BY_NAME"; PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_position IN PLS_INTEGER, argument_value IN FLOAT) IS LANGUAGE "C" NAME "BLDIN_SET_JOB_R4_ARG_BY_ORD"; PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_name IN VARCHAR2, argument_value IN FLOAT) IS LANGUAGE "C" NAME "BLDIN_SET_JOB_R4_ARG_BY_NAME"; PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_position IN PLS_INTEGER, argument_value IN DOUBLE) IS LANGUAGE "C" NAME "BLDIN_SET_JOB_R8_ARG_BY_ORD"; PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_name IN VARCHAR2, argument_value IN DOUBLE) IS LANGUAGE "C" NAME "BLDIN_SET_JOB_R8_ARG_BY_NAME"; PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_position IN PLS_INTEGER, argument_value IN NUMERIC) IS LANGUAGE "C" NAME "BLDIN_SET_JOB_NUM_ARG_BY_ORD"; PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_name IN VARCHAR2, argument_value IN NUMERIC) IS LANGUAGE "C" NAME "BLDIN_SET_JOB_NUM_ARG_BY_NAME"; PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_position IN PLS_INTEGER, argument_value IN BOOLEAN) IS LANGUAGE "C" NAME "BLDIN_SET_JOB_BOOL_ARG_BY_ORD"; PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_name IN VARCHAR2, argument_value IN BOOLEAN) IS LANGUAGE "C" NAME "BLDIN_SET_JOB_BOOL_ARG_BY_NAME"; PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_position IN PLS_INTEGER, argument_value IN TIME) IS LANGUAGE "C" NAME "BLDIN_SET_JOB_TIME_ARG_BY_ORD"; PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_name IN VARCHAR2, argument_value IN TIME) IS LANGUAGE "C" NAME "BLDIN_SET_JOB_TIME_ARG_BY_NAME"; PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_position IN PLS_INTEGER, argument_value IN DATE) IS LANGUAGE "C" NAME "BLDIN_SET_JOB_DATE_ARG_BY_ORD"; PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_name IN VARCHAR2, argument_value IN DATE) IS LANGUAGE "C" NAME "BLDIN_SET_JOB_DATE_ARG_BY_NAME"; PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_position IN PLS_INTEGER, argument_value IN DATETIME) IS LANGUAGE "C" NAME "BLDIN_SET_JOB_DT_ARG_BY_ORD"; PROCEDURE SET_JOB_ARGUMENT_VALUE ( job_name IN VARCHAR2, argument_name IN VARCHAR2, argument_value IN DATETIME) IS LANGUAGE "C" NAME "BLDIN_SET_JOB_DT_ARG_BY_NAME"; PROCEDURE RUN_JOB ( job_name IN VARCHAR2, use_current_session IN BOOLEAN DEFAULT TRUE) IS LANGUAGE "C" NAME "BLDIN_RUN_JOB"; PROCEDURE ENABLE ( name IN VARCHAR2) IS LANGUAGE "C" NAME "BLDIN_ENABLE_JOB"; PROCEDURE DISABLE ( name IN VARCHAR2, force IN BOOLEAN DEFAULT FALSE) IS LANGUAGE "C" NAME "BLDIN_DISABLE_JOB"; PROCEDURE DROP_JOB ( job_name IN VARCHAR2, force IN BOOLEAN DEFAULT FALSE) IS LANGUAGE "C" NAME "BLDIN_DROP_JOB"; FUNCTION JOB_NEXT_RUNTIME( job_name IN VARCHAR2, last_rt IN DATETIME) RETURN DATETIME IS LANGUAGE "C" NAME "BLDIN_GET_JOB_NEXT_RUNTIME"; FUNCTION NEXT_RUNTIME( repeat_interval IN VARCHAR2, last_rt IN DATETIME) RETURN DATETIME IS LANGUAGE "C" NAME "BLDIN_GET_NEXT_RUNTIME"; END SYSDBA.DBMS_SCHEDULER; / /**************����DBMS_SQL��********************/ CREATE OR REPLACE PACKAGE SYSDBA.DBMS_SQL AUTHID CURRENT_USER IS --����������Ϣ�ṹ SUBTYPE TParaInfo IS RECORD(ParaName VARCHAR(128), --������ ParaNo INTEGER, --��� ParaTid INTEGER, --����ID ParaScale INTEGER, --���ȱ�� BindState INTEGER); --��״̬(0:δ�� 1:�Ѱ�) SUBTYPE TParams IS TABLE OF TParaInfo; --����ֶ�������Ϣ�ṹ SUBTYPE TResInfo IS RECORD(ResName VARCHAR(128), --����ֶ��� ResTid INTEGER, --����ֶ����� ResScale INTEGER, --������ȱ�� ResFlag INTEGER, --������ӱ�־ TargTid INTEGER, --���ձ���������ID TargScale INTEGER); --���ձ��������;��ȱ�� SUBTYPE TResults IS TABLE OF TResInfo; --�α����ṹ SUBTYPE TCursor IS RECORD(StmtState INTEGER, --��ǰ״̬ StmtType INTEGER, --parse���ص�������� StmtSQL VARCHAR(2000), --SQL��� ObjPtr VARCHAR(20), --�ڲ�������(��ϵͳʹ��) ParaInfos TParams, --���������� ResInfos TResults); --��������� SUBTYPE CursorVarr IS VARRAY(100) OF TCursor; --�������� NATIVE INTEGER :=1; TYPE_BOOL INTEGER :=2; TYPE_I1 INTEGER :=3; TYPE_I2 INTEGER :=4; TYPE_I4 INTEGER :=5; TYPE_I8 INTEGER :=6; TYPE_NUMERIC INTEGER :=7; TYPE_R4 INTEGER :=8; TYPE_R8 INTEGER :=9; TYPE_DATE INTEGER :=10; TYPE_TIME INTEGER :=11; TYPE_TIMEZ INTEGER :=12; TYPE_DATETIME INTEGER :=13; TYPE_DATETIMEZ INTEGER :=14; TYPE_INTERVAL_Y INTEGER :=15; TYPE_INTERVAL_Y2M INTEGER :=16; TYPE_INTERVAL_M INTEGER :=17; TYPE_INTERVAL_D INTEGER :=18; TYPE_INTERVAL_D2H INTEGER :=19; TYPE_INTERVAL_H INTEGER :=20; TYPE_INTERVAL_D2M INTEGER :=21; TYPE_INTERVAL_H2M INTEGER :=22; TYPE_INTERVAL_MI INTEGER :=23; TYPE_INTERVAL_D2S INTEGER :=24; TYPE_INTERVAL_H2S INTEGER :=25; TYPE_INTERVAL_M2S INTEGER :=26; TYPE_INTERVAL_S INTEGER :=27; TYPE_ROWVER INTEGER :=28; TYPE_GUID INTEGER :=29; TYPE_STR INTEGER :=30; TYPE_CHAR INTEGER :=30; TYPE_VARCHAR INTEGER :=30; TYPE_CLOB INTEGER :=32; TYPE_BINARY INTEGER :=33; TYPE_BLOB INTEGER :=34; TYPE_ROWID INTEGER :=45; --SQL״̬ STMT_STATE_OPENED INTEGER := 1; STMT_STATE_PARSED INTEGER := 2; STMT_STATE_BINDED INTEGER := 3; STMT_STATE_DEFINED INTEGER := 4; STMT_STATE_EXCUTED INTEGER := 5; STMT_STATE_FETCHED INTEGER := 6; --�α�������� Cursors CursorVarr; FUNCTION STROF_CURSOR(CurNo INTEGER) RETURN VARCHAR(5000); FUNCTION OPEN_CURSOR() RETURN INTEGER; FUNCTION IS_OPEN(c IN INTEGER) RETURN BOOLEAN; FUNCTION PARSE(CurNo INTEGER,StmtSQL VARCHAR,SqlType INTEGER) RETURN INTEGER; FUNCTION EXECUTE(CurNo INTEGER) RETURN INTEGER; FUNCTION FETCH_ROWS(CurNo INTEGER) RETURN INTEGER; FUNCTION CLOSE_CURSOR(CurNo INTEGER) RETURN INTEGER; FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val BOOLEAN) RETURN INTEGER; FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val TINYINT) RETURN INTEGER; FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val SMALLINT) RETURN INTEGER; FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTEGER) RETURN INTEGER; FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val BIGINT) RETURN INTEGER; FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val FLOAT) RETURN INTEGER; FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val DOUBLE) RETURN INTEGER; FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val NUMERIC) RETURN INTEGER; FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val VARCHAR) RETURN INTEGER; FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val CLOB) RETURN INTEGER; FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val BLOB) RETURN INTEGER; FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val TIME) RETURN INTEGER; FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val TIME WITH TIME ZONE) RETURN INTEGER; FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val DATE) RETURN INTEGER; FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val DATETIME) RETURN INTEGER; FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val DATETIME WITH TIME ZONE) RETURN INTEGER; FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL YEAR) RETURN INTEGER; FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL YEAR TO MONTH) RETURN INTEGER; FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL MONTH) RETURN INTEGER; FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL DAY) RETURN INTEGER; FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL DAY TO HOUR) RETURN INTEGER; FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL HOUR) RETURN INTEGER; FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL DAY TO MINUTE) RETURN INTEGER; FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL HOUR TO MINUTE) RETURN INTEGER; FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL MINUTE) RETURN INTEGER; FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL DAY TO SECOND) RETURN INTEGER; FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL HOUR TO SECOND) RETURN INTEGER; FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL MINUTE TO SECOND) RETURN INTEGER; FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL SECOND) RETURN INTEGER; FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val GUID) RETURN INTEGER; FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val BINARY) RETURN INTEGER; FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val ROWID) RETURN INTEGER; FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT BOOLEAN) RETURN INTEGER; FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT TINYINT) RETURN INTEGER; FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT SMALLINT) RETURN INTEGER; FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTEGER) RETURN INTEGER; FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT BIGINT) RETURN INTEGER; FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT FLOAT) RETURN INTEGER; FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT DOUBLE) RETURN INTEGER; FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT NUMERIC) RETURN INTEGER; FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT VARCHAR) RETURN INTEGER; FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT CLOB) RETURN INTEGER; FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT BLOB) RETURN INTEGER; FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT TIME) RETURN INTEGER; FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT TIME WITH TIME ZONE) RETURN INTEGER; FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT DATE) RETURN INTEGER; FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT DATETIME) RETURN INTEGER; FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT DATETIME WITH TIME ZONE) RETURN INTEGER; FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL YEAR) RETURN INTEGER; FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL YEAR TO MONTH) RETURN INTEGER; FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL MONTH) RETURN INTEGER; FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL DAY) RETURN INTEGER; FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL DAY TO HOUR) RETURN INTEGER; FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL HOUR) RETURN INTEGER; FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL DAY TO MINUTE) RETURN INTEGER; FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL HOUR TO MINUTE) RETURN INTEGER; FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL MINUTE) RETURN INTEGER; FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL DAY TO SECOND) RETURN INTEGER; FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL HOUR TO SECOND) RETURN INTEGER; FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL MINUTE TO SECOND) RETURN INTEGER; FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL SECOND) RETURN INTEGER; FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT GUID) RETURN INTEGER; FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT BINARY) RETURN INTEGER; FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT ROWID) RETURN INTEGER; FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT BOOLEAN) RETURN INTEGER; FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT TINYINT) RETURN INTEGER; FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT SMALLINT) RETURN INTEGER; FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTEGER) RETURN INTEGER; FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT BIGINT) RETURN INTEGER; FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT FLOAT) RETURN INTEGER; FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT DOUBLE) RETURN INTEGER; FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT NUMERIC) RETURN INTEGER; FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT VARCHAR) RETURN INTEGER; FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT CLOB) RETURN INTEGER; FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT BLOB) RETURN INTEGER; FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT TIME) RETURN INTEGER; FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT TIME WITH TIME ZONE) RETURN INTEGER; FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT DATE) RETURN INTEGER; FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT DATETIME) RETURN INTEGER; FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT DATETIME WITH TIME ZONE) RETURN INTEGER; FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL YEAR) RETURN INTEGER; FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL YEAR TO MONTH) RETURN INTEGER; FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL MONTH) RETURN INTEGER; FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL DAY) RETURN INTEGER; FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL DAY TO HOUR) RETURN INTEGER; FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL HOUR) RETURN INTEGER; FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL DAY TO MINUTE) RETURN INTEGER; FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL HOUR TO MINUTE) RETURN INTEGER; FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL MINUTE) RETURN INTEGER; FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL DAY TO SECOND) RETURN INTEGER; FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL HOUR TO SECOND) RETURN INTEGER; FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL MINUTE TO SECOND) RETURN INTEGER; FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL SECOND) RETURN INTEGER; FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT GUID) RETURN INTEGER; FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT BINARY) RETURN INTEGER; FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT ROWID) RETURN INTEGER; END SYSDBA.DBMS_SQL; / /**************����DBMS_SQL����********************/ CREATE OR REPLACE PACKAGE BODY SYSDBA.DBMS_SQL IS FUNCTION BLDIN_PARSE(sql_str VARCHAR,sys_obj OUT VARCHAR,paras_info OUT TParams,targs_info OUT TResults) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_PARSE"; FUNCTION BLDIN_EXECUTE(ObjName VARCHAR) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_EXECUTE"; FUNCTION BLDIN_FETCH_ROWS (ObjName VARCHAR) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_FETCH"; FUNCTION BLDIN_CLOSE_CURSOR(Cur VARCHAR) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_CLOSE_STMT"; FUNCTION BLDIN_PARA_NAME_CMP(sor_name VARCHAR,targ_name VARCHAR) RETURN BOOLEAN IS LANGUAGE "C" NAME "BLDIN_PARA_NAME_CMP"; FUNCTION BLDIN_BIND_BOOL(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val BOOLEAN) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND"; FUNCTION BLDIN_NAME_BIND_BOOL(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val BOOLEAN) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME"; FUNCTION BLDIN_BIND_I1(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val TINYINT) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND"; FUNCTION BLDIN_NAME_BIND_I1(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val TINYINT) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME"; FUNCTION BLDIN_BIND_I2(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val SMALLINT) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND"; FUNCTION BLDIN_NAME_BIND_I2(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val SMALLINT) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME"; FUNCTION BLDIN_BIND_I4(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val INTEGER) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND"; FUNCTION BLDIN_NAME_BIND_I4(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val INTEGER) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME"; FUNCTION BLDIN_BIND_I8(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val BIGINT) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND"; FUNCTION BLDIN_NAME_BIND_I8(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val BIGINT) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME"; FUNCTION BLDIN_BIND_R4(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val FLOAT) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND"; FUNCTION BLDIN_NAME_BIND_R4(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val FLOAT) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME"; FUNCTION BLDIN_BIND_R8(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val DOUBLE) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND"; FUNCTION BLDIN_NAME_BIND_R8(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val DOUBLE) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME"; FUNCTION BLDIN_BIND_Str(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val VARCHAR) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND"; FUNCTION BLDIN_NAME_BIND_Str(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val VARCHAR) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME"; FUNCTION BLDIN_BIND_CLOB(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val CLOB) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND"; FUNCTION BLDIN_NAME_BIND_CLOB(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val CLOB) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME"; FUNCTION BLDIN_BIND_BLOB(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val BLOB) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND"; FUNCTION BLDIN_NAME_BIND_BLOB(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val BLOB) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME"; FUNCTION BLDIN_BIND_T(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val TIME) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND"; FUNCTION BLDIN_NAME_BIND_T(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val TIME) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME"; FUNCTION BLDIN_BIND_TZ(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val TIME WITH TIME ZONE) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND"; FUNCTION BLDIN_NAME_BIND_TZ(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val TIME WITH TIME ZONE) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME"; FUNCTION BLDIN_BIND_D(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val DATE) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND"; FUNCTION BLDIN_NAME_BIND_D(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val DATE) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME"; FUNCTION BLDIN_BIND_DT(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val DATETIME) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND"; FUNCTION BLDIN_NAME_BIND_DT(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val DATETIME) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME"; FUNCTION BLDIN_BIND_DTZ(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val DATETIME WITH TIME ZONE) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND"; FUNCTION BLDIN_NAME_BIND_DTZ(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val DATETIME WITH TIME ZONE) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME"; FUNCTION BLDIN_BIND_IY(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val INTERVAL YEAR) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND"; FUNCTION BLDIN_NAME_BIND_IY(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val INTERVAL YEAR) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME"; FUNCTION BLDIN_BIND_IY2M(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val INTERVAL YEAR TO MONTH) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND"; FUNCTION BLDIN_NAME_BIND_IY2M(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val INTERVAL YEAR TO MONTH) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME"; FUNCTION BLDIN_BIND_IM(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val INTERVAL MONTH) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND"; FUNCTION BLDIN_NAME_BIND_IM(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val INTERVAL MONTH) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME"; FUNCTION BLDIN_BIND_ID(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val INTERVAL DAY) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND"; FUNCTION BLDIN_NAME_BIND_ID(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val INTERVAL DAY) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME"; FUNCTION BLDIN_BIND_ID2H(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val INTERVAL DAY TO HOUR) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND"; FUNCTION BLDIN_NAME_BIND_ID2H(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val INTERVAL DAY TO HOUR) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME"; FUNCTION BLDIN_BIND_IH(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val INTERVAL HOUR) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND"; FUNCTION BLDIN_NAME_BIND_IH(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val INTERVAL HOUR) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME"; FUNCTION BLDIN_BIND_ID2M(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val INTERVAL DAY TO MINUTE) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND"; FUNCTION BLDIN_NAME_BIND_ID2M(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val INTERVAL DAY TO MINUTE) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME"; FUNCTION BLDIN_BIND_IH2M(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val INTERVAL HOUR TO MINUTE) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND"; FUNCTION BLDIN_NAME_BIND_IH2M(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val INTERVAL HOUR TO MINUTE) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME"; FUNCTION BLDIN_BIND_IMI(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val INTERVAL MINUTE) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND"; FUNCTION BLDIN_NAME_BIND_IMI(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val INTERVAL MINUTE) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME"; FUNCTION BLDIN_BIND_ID2S(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val INTERVAL DAY TO SECOND) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND"; FUNCTION BLDIN_NAME_BIND_ID2S(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val INTERVAL DAY TO SECOND) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME"; FUNCTION BLDIN_BIND_IH2S(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val INTERVAL HOUR TO SECOND) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND"; FUNCTION BLDIN_NAME_BIND_IH2S(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val INTERVAL HOUR TO SECOND) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME"; FUNCTION BLDIN_BIND_IM2S(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val INTERVAL MINUTE TO SECOND) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND"; FUNCTION BLDIN_NAME_BIND_IM2S(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val INTERVAL MINUTE TO SECOND) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME"; FUNCTION BLDIN_BIND_IS(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val INTERVAL SECOND) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND"; FUNCTION BLDIN_NAME_BIND_IS(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val INTERVAL SECOND) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME"; FUNCTION BLDIN_BIND_N(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val NUMERIC) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND"; FUNCTION BLDIN_NAME_BIND_N(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val NUMERIC) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME"; FUNCTION BLDIN_BIND_GUID(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val GUID) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND"; FUNCTION BLDIN_NAME_BIND_GUID(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val GUID) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME"; FUNCTION BLDIN_BIND_BINARY(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val BINARY) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND"; FUNCTION BLDIN_NAME_BIND_BINARY(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val BINARY) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME"; FUNCTION BLDIN_BIND_ROWID(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val ROWID) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND"; FUNCTION BLDIN_NAME_BIND_ROWID(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val ROWID) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME"; FUNCTION BLDIN_DEFINE_COLUMN (ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_DEFINE_COLUMN"; FUNCTION BLDIN_COLUMN_VALUE_BOOL(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN BOOLEAN IS LANGUAGE "C" NAME "BLDIN_GET"; FUNCTION BLDIN_COLUMN_VALUE_I1(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN TINYINT IS LANGUAGE "C" NAME "BLDIN_GET"; FUNCTION BLDIN_COLUMN_VALUE_I2(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN SMALLINT IS LANGUAGE "C" NAME "BLDIN_GET"; FUNCTION BLDIN_COLUMN_VALUE_I4(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_GET"; FUNCTION BLDIN_COLUMN_VALUE_I8(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN BIGINT IS LANGUAGE "C" NAME "BLDIN_GET"; FUNCTION BLDIN_COLUMN_VALUE_R4(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN FLOAT IS LANGUAGE "C" NAME "BLDIN_GET"; FUNCTION BLDIN_COLUMN_VALUE_R8(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN DOUBLE IS LANGUAGE "C" NAME "BLDIN_GET"; FUNCTION BLDIN_COLUMN_VALUE_N(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN NUMERIC IS LANGUAGE "C" NAME "BLDIN_GET"; FUNCTION BLDIN_COLUMN_VALUE_STR(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN VARCHAR IS LANGUAGE "C" NAME "BLDIN_GET"; FUNCTION BLDIN_COLUMN_VALUE_CLOB(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN CLOB IS LANGUAGE "C" NAME "BLDIN_GET"; FUNCTION BLDIN_COLUMN_VALUE_BLOB(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN BLOB IS LANGUAGE "C" NAME "BLDIN_GET"; FUNCTION BLDIN_COLUMN_VALUE_T(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN TIME IS LANGUAGE "C" NAME "BLDIN_GET"; FUNCTION BLDIN_COLUMN_VALUE_TZ(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN TIME WITH TIME ZONE IS LANGUAGE "C" NAME "BLDIN_GET"; FUNCTION BLDIN_COLUMN_VALUE_D(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN DATE IS LANGUAGE "C" NAME "BLDIN_GET"; FUNCTION BLDIN_COLUMN_VALUE_DT(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN DATETIME IS LANGUAGE "C" NAME "BLDIN_GET"; FUNCTION BLDIN_COLUMN_VALUE_DTZ(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN DATETIME WITH TIME ZONE IS LANGUAGE "C" NAME "BLDIN_GET"; FUNCTION BLDIN_COLUMN_VALUE_IY(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN INTERVAL YEAR IS LANGUAGE "C" NAME "BLDIN_GET"; FUNCTION BLDIN_COLUMN_VALUE_IY2M(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN INTERVAL YEAR TO MONTH IS LANGUAGE "C" NAME "BLDIN_GET"; FUNCTION BLDIN_COLUMN_VALUE_IM(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN INTERVAL MONTH IS LANGUAGE "C" NAME "BLDIN_GET"; FUNCTION BLDIN_COLUMN_VALUE_ID(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN INTERVAL DAY IS LANGUAGE "C" NAME "BLDIN_GET"; FUNCTION BLDIN_COLUMN_VALUE_ID2H(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN INTERVAL DAY TO HOUR IS LANGUAGE "C" NAME "BLDIN_GET"; FUNCTION BLDIN_COLUMN_VALUE_IH(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN INTERVAL HOUR IS LANGUAGE "C" NAME "BLDIN_GET"; FUNCTION BLDIN_COLUMN_VALUE_ID2M(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN INTERVAL DAY TO MINUTE IS LANGUAGE "C" NAME "BLDIN_GET"; FUNCTION BLDIN_COLUMN_VALUE_IH2M(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN INTERVAL HOUR TO MINUTE IS LANGUAGE "C" NAME "BLDIN_GET"; FUNCTION BLDIN_COLUMN_VALUE_IMI(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN INTERVAL MINUTE IS LANGUAGE "C" NAME "BLDIN_GET"; FUNCTION BLDIN_COLUMN_VALUE_ID2S(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN INTERVAL DAY TO SECOND IS LANGUAGE "C" NAME "BLDIN_GET"; FUNCTION BLDIN_COLUMN_VALUE_IH2S(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN INTERVAL HOUR TO SECOND IS LANGUAGE "C" NAME "BLDIN_GET"; FUNCTION BLDIN_COLUMN_VALUE_IM2S(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN INTERVAL MINUTE TO SECOND IS LANGUAGE "C" NAME "BLDIN_GET"; FUNCTION BLDIN_COLUMN_VALUE_IS(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN INTERVAL SECOND IS LANGUAGE "C" NAME "BLDIN_GET"; FUNCTION BLDIN_COLUMN_VALUE_GUID(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN GUID IS LANGUAGE "C" NAME "BLDIN_GET"; FUNCTION BLDIN_COLUMN_VALUE_BINARY(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN BINARY IS LANGUAGE "C" NAME "BLDIN_GET"; FUNCTION BLDIN_COLUMN_VALUE_ROWID(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN ROWID IS LANGUAGE "C" NAME "BLDIN_GET"; /******************�����ŷ�Χ***********/ FUNCTION CHECK_CURNO_RANGE(CurNo INTEGER) RETURN INTEGER IS BEGIN IF (CurNo ISNULL OR CurNo<1 OR CurNo>100) THEN RAISE_APPLICATION_ERROR(-1002,'�α���Ŵ���'); RETURN -1; END IF; END; /******************��������***********/ FUNCTION CHECK_CURNO_EXIST(CurNo INTEGER) RETURN INTEGER IS BEGIN IF cursors(CurNo).StmtState ISNULL THEN RAISE_APPLICATION_ERROR(-1003,'���Ϊ'||CurNo||'���α겻����'); RETURN -1; ENDIF; END; /******************������״̬***********/ FUNCTION CHECK_CURNO_STATE(CurNo INTEGER,STATE INTEGER) RETURN INTEGER IS BEGIN IF STATE = STMT_STATE_PARSED AND cursors(CurNo).StmtState < STMT_STATE_PARSED THEN RAISE_APPLICATION_ERROR(-1005,'���Ϊ'||CurNo||'���α�δ����parse��'); RETURN -1; ELSIF STATE = STMT_STATE_EXCUTED AND cursors(CurNo).StmtState < STMT_STATE_EXCUTED THEN RAISE_APPLICATION_ERROR(-1005,'���Ϊ'||CurNo||'���α�δ����execute��'); RETURN -1; ELSIF STATE = STMT_STATE_FETCHED AND cursors(CurNo).StmtState < STMT_STATE_FETCHED THEN RAISE_APPLICATION_ERROR(-1005,'���Ϊ'||CurNo||'���α�δ����fetch��'); RETURN -1; ENDIF; END; /******************������**************/ FUNCTION CHECK_CURNO(CurNo INTEGER,STATE INTEGER) RETURN INTEGER IS BEGIN --�����ŷ�Χ CHECK_CURNO_RANGE(CurNo); --�������� CHECK_CURNO_EXIST(CurNo); --������״̬ CHECK_CURNO_STATE(CurNo,STATE); END; /******************�����ŷ�Χ�ʹ�����**************/ FUNCTION CHECK_CURNO_RANGE_AND_EXIST(CurNo INTEGER) RETURN INTEGER IS BEGIN --�����ŷ�Χ CHECK_CURNO_RANGE(CurNo); --�������� CHECK_CURNO_EXIST(CurNo); END; /******************�������Ƿ��Ѱ�**************/ FUNCTION CHECK_PARA_BIND_STATE(Paras TParams) RETURN INTEGER IS para TParaInfo; BEGIN --����������������в����Ƿ��Ѱ� IF(Paras NOTNULL AND Paras.count>0) THEN FOR i IN 1 .. Paras.COUNT LOOP para:=Paras(i); if(para ISNULL OR para.BindState=0) THEN RAISE_APPLICATION_ERROR(-1006, '����'||para.ParaName||'δ��'); ENDIF; END FOR; ENDIF; END; /******************���ð����İ�״̬�����°���������**************/ FUNCTION SET_BIND_PARA_INFO(Paras IN OUT TParams,ParaName VARCHAR,ParaTid INTEGER) RETURN INTEGER IS para_no INTEGER; BEGIN --�������������ж�Ӧ�IJ�����ǰ�λ�������°IJ������͡� IF(Paras NOTNULL AND Paras.count>0) THEN para_no:=0; FOR i IN 1 .. Paras.COUNT LOOP if(Paras(i) NOTNULL AND (BLDIN_PARA_NAME_CMP(Paras(i).ParaName,ParaName) OR BLDIN_PARA_NAME_CMP(Paras(i).ParaName,(':'||ParaName)))) THEN Paras(i).BindState:=1; Paras(i).ParaTid:=ParaTid; para_no:=i; EXIT; ENDIF; END FOR; IF(para_no=0) THEN RAISE_APPLICATION_ERROR(-1007,'��������'||ParaName||'������'); ENDIF; ENDIF; END; /******************���ɱ��ΪCurNo��Cursor���ı���Ϣ,����֧�ֵ���***********/ FUNCTION STROF_CURSOR(CurNo INTEGER) RETURN VARCHAR(5000) IS cur TCursor; str VARCHAR(5000); para TParaInfo; targ TResInfo; BEGIN --�����ŷ�Χ CHECK_CURNO_RANGE(CurNo); --�������� CHECK_CURNO_EXIST(CurNo); cur:=cursors(CurNo); --���״̬,�ڲ������ַ,SQL���� str:='Cursor{' || NEWLINE || ' state=' || cur.StmtState || ' ' || 'ObjPtr=' || cur.ObjPtr || NEWLINE || ' SQL=' || cur.StmtSQL || NEWLINE; --���������Ϣ IF(cur.ParaInfos NOTNULL AND cur.ParaInfos.count>0) THEN str:=str || ' Paras[' || NEWLINE; FOR i IN 1 .. cur.ParaInfos.COUNT LOOP para:=cur.ParaInfos(i); str:=str || ' (' || para.ParaName || ' ' || para.ParaNo || ' ' || para.ParaTid || ' ' || para.ParaScale || ')' || NEWLINE; END FOR; str:=str || ' ]' || NEWLINE; ENDIF; --���������ֶ���Ϣ IF(cur.ResInfos NOTNULL AND cur.ResInfos.count>0) THEN str:=str || ' Targets[' || NEWLINE; FOR i IN 1 .. cur.ResInfos.COUNT LOOP targ:=cur.ResInfos(i); str:=str || ' (' || targ.ResName || ' ' || targ.ResTid || ' ' || targ.ResScale || ' ' || targ.ResFlag || ')'||NEWLINE; END FOR; str:=str || ' ]' || NEWLINE; ENDIF; --���ؽ�� RETURN str; END; /*****************��һ���α�(����һ���α����,�����α���)**************/ FUNCTION OPEN_CURSOR() RETURN INTEGER IS i INTEGER; BEGIN /*���������ҳ���ֵ��,���ڴ�����cursor����*/ FOR i IN 1...100 LOOP IF (Cursors(i).StmtState ISNULL) THEN Cursors(i).StmtState := STMT_STATE_OPENED; RETURN i; END IF; END FOR; RAISE_APPLICATION_ERROR(-1001,'���α�̫��(���100��)'); RETURN -1; END; /*****************�ر�һ���α�*****************************/ FUNCTION CLOSE_CURSOR(CurNo INTEGER) RETURN INTEGER IS BEGIN --�����ŷ�Χ CHECK_CURNO_RANGE(CurNo); --�������� CHECK_CURNO_EXIST(CurNo); --�����ڲ������ر��ں˶��� IF (cursors(CurNo).ObjPtr NOTNULL) THEN BLDIN_CLOSE_CURSOR(cursors(CurNo).ObjPtr); ENDIF; cursors(CurNo).StmtState := NULL; cursors(CurNo).StmtSQL := NULL; cursors(CurNo).ObjPtr := NULL; cursors(CurNo).ParaInfos := NULL; cursors(CurNo).ResInfos := NULL; RETURN 1; END; /*****************���һ���α��Ƿ��ڿ���״̬***************************/ FUNCTION IS_OPEN(CurNo IN INTEGER) RETURN BOOLEAN IS BEGIN --�����ŷ�Χ CHECK_CURNO_RANGE(CurNo); --�������� IF (cursors(CurNo).StmtState IS NULL) THEN RETURN FALSE; ELSE RETURN TRUE; END IF; END; /********************ΪCursor����һ��SQL���,�����������*****************/ FUNCTION PARSE(CurNo INTEGER,SqlStr VARCHAR,SqlType INTEGER) RETURN INTEGER IS cur TCursor; BEGIN --�����ŷ�Χ CHECK_CURNO_RANGE(CurNo); --�������� CHECK_CURNO_EXIST(CurNo); --����SQL��� cursors(CurNo).StmtSQL:=SqlStr; --�����ں�ִ����������滮 cursors(CurNo).StmtType := BLDIN_PARSE(SqlStr,cursors(CurNo).ObjPtr,cursors(CurNo).ParaInfos,cursors(CurNo).ResInfos); --��cursor״̬ IF(cursors(CurNo).StmtType>0) THEN cursors(CurNo).StmtState := STMT_STATE_PARSED; --��ʾ�ѷ���,��δ���� ELSE RAISE_APPLICATION_ERROR(-1004,'δ֪��SQL���'); END IF; --����������� RETURN cursors(CurNo).StmtType; END; /**************ִ���α����*************/ FUNCTION EXECUTE(CurNo INTEGER) RETURN INTEGER IS cur_name VARCHAR; ret INTEGER; BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_PARSED); CHECK_PARA_BIND_STATE(cursors(CurNo).ParaInfos); ret := BLDIN_EXECUTE(cursors(CurNo).ObjPtr); cursors(CurNo).StmtState := STMT_STATE_EXCUTED; RETURN ret; END; /****************��ǰץȡһ��*************/ FUNCTION FETCH_ROWS(CurNo INTEGER) RETURN INTEGER IS ret INTEGER; BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_EXCUTED); ret := BLDIN_FETCH_ROWS(cursors(CurNo).ObjPtr); cursors(CurNo).StmtState := STMT_STATE_FETCHED; RETURN ret; END; /*********************��BOOLEAN�Ͳ���**********************/ FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val BOOLEAN) RETURN INTEGER IS col_name VARCHAR:=UPPER(ColName); BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_PARSED); SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_BOOL); RETURN BLDIN_NAME_BIND_BOOL(cursors(CurNo).ObjPtr,col_name,TYPE_BOOL,Val); END; /*********************��Tinyint�Ͳ���**********************/ FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val TINYINT) RETURN INTEGER IS col_name VARCHAR:=UPPER(ColName); BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_PARSED); SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_I1); RETURN BLDIN_NAME_BIND_I1(cursors(CurNo).ObjPtr,col_name,TYPE_I1,Val); END; /*********************��SmallInt�Ͳ���**********************/ FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val SMALLINT) RETURN INTEGER IS col_name VARCHAR:=UPPER(ColName); BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_PARSED); SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_I2); RETURN BLDIN_NAME_BIND_I2(cursors(CurNo).ObjPtr,col_name,TYPE_I2,Val); END; /*********************��Integer�Ͳ���**********************/ FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTEGER) RETURN INTEGER IS col_name VARCHAR:=UPPER(ColName); BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_PARSED); SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_I4); RETURN BLDIN_NAME_BIND_I4(cursors(CurNo).ObjPtr,col_name,TYPE_I4,Val); END; /*********************��BigInt�Ͳ���**********************/ FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val BIGINT) RETURN INTEGER IS col_name VARCHAR:=UPPER(ColName); BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_PARSED); SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_I8); RETURN BLDIN_NAME_BIND_I8(cursors(CurNo).ObjPtr,col_name,TYPE_I8,Val); END; /*********************��Float�Ͳ���**********************/ FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val Float) RETURN INTEGER IS col_name VARCHAR:=UPPER(ColName); BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_PARSED); SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_R4); RETURN BLDIN_NAME_BIND_R4(cursors(CurNo).ObjPtr,col_name,TYPE_R4,Val); END; /*********************��Double�Ͳ���**********************/ FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val DOUBLE) RETURN INTEGER IS col_name VARCHAR:=UPPER(ColName); BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_PARSED); SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_R8); RETURN BLDIN_NAME_BIND_R8(cursors(CurNo).ObjPtr,col_name,TYPE_R8,Val); END; /*********************��Numeric�Ͳ���**********************/ FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val NUMERIC) RETURN INTEGER IS col_name VARCHAR:=UPPER(ColName); BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_PARSED); SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_NUMERIC); RETURN BLDIN_NAME_BIND_N(cursors(CurNo).ObjPtr,col_name,TYPE_NUMERIC,Val); END; /*********************��CLOB�Ͳ���**********************/ FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val CLOB) RETURN INTEGER IS col_name VARCHAR:=UPPER(ColName); BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_PARSED); SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_CLOB); RETURN BLDIN_NAME_BIND_CLOB(cursors(CurNo).ObjPtr,col_name,TYPE_CLOB,Val); END; /*********************��BLOB�Ͳ���**********************/ FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val BLOB) RETURN INTEGER IS col_name VARCHAR:=UPPER(ColName); BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_PARSED); SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_BLOB); RETURN BLDIN_NAME_BIND_BLOB(cursors(CurNo).ObjPtr,col_name,TYPE_BLOB,Val); END; /*********************��VARCHAR�Ͳ���**********************/ FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val VARCHAR) RETURN INTEGER IS col_name VARCHAR:=UPPER(ColName); BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_PARSED); SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_VARCHAR); RETURN BLDIN_NAME_BIND_STR(cursors(CurNo).ObjPtr,col_name,TYPE_VARCHAR,Val); END; /*********************��Time�Ͳ���**********************/ FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val TIME) RETURN INTEGER IS col_name VARCHAR:=UPPER(ColName); BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_PARSED); SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_TIME); RETURN BLDIN_NAME_BIND_T(cursors(CurNo).ObjPtr,col_name,TYPE_TIME,Val); END; /*********************�� TIME WITH TIME ZONE �Ͳ���**********************/ FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val TIME WITH TIME ZONE) RETURN INTEGER IS col_name VARCHAR:=UPPER(ColName); BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_PARSED); SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_TIMEZ); RETURN BLDIN_NAME_BIND_TZ(cursors(CurNo).ObjPtr,col_name,TYPE_TIMEZ,Val); END; /*********************��Date�Ͳ���**********************/ FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val DATE) RETURN INTEGER IS col_name VARCHAR:=UPPER(ColName); BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_PARSED); SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_DATE); RETURN BLDIN_NAME_BIND_D(cursors(CurNo).ObjPtr,col_name,TYPE_DATE,Val); END; /*********************��DateTime�Ͳ���**********************/ FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val DATETIME) RETURN INTEGER IS col_name VARCHAR:=UPPER(ColName); BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_PARSED); SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_DATETIME); RETURN BLDIN_NAME_BIND_DT(cursors(CurNo).ObjPtr,col_name,TYPE_DATETIME,Val); END; /*********************��DATETIME WITH TIME ZONE�Ͳ���**********************/ FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val DATETIME WITH TIME ZONE) RETURN INTEGER IS col_name VARCHAR:=UPPER(ColName); BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_PARSED); SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_DATETIMEZ); RETURN BLDIN_NAME_BIND_DTZ(cursors(CurNo).ObjPtr,col_name,TYPE_DATETIMEZ,Val); END; /*********************�� INTERVAL YEAR �Ͳ���**********************/ FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL YEAR) RETURN INTEGER IS col_name VARCHAR:=UPPER(ColName); BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_PARSED); SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_INTERVAL_Y); RETURN BLDIN_NAME_BIND_IY(cursors(CurNo).ObjPtr,col_name,TYPE_INTERVAL_Y,Val); END; /*********************�� INTERVAL YEAR TO MONTH �Ͳ���**********************/ FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL YEAR TO MONTH) RETURN INTEGER IS col_name VARCHAR:=UPPER(ColName); BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_PARSED); SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_INTERVAL_Y2M); RETURN BLDIN_NAME_BIND_IY2M(cursors(CurNo).ObjPtr,col_name,TYPE_INTERVAL_Y2M,Val); END; /*********************�� INTERVAL MONTH �Ͳ���**********************/ FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL MONTH) RETURN INTEGER IS col_name VARCHAR:=UPPER(ColName); BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_PARSED); SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_INTERVAL_M); RETURN BLDIN_NAME_BIND_IM(cursors(CurNo).ObjPtr,col_name,TYPE_INTERVAL_M,Val); END; /*********************�� INTERVAL DAY �Ͳ���**********************/ FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL DAY) RETURN INTEGER IS col_name VARCHAR:=UPPER(ColName); BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_PARSED); SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_INTERVAL_D); RETURN BLDIN_NAME_BIND_ID(cursors(CurNo).ObjPtr,col_name,TYPE_INTERVAL_D,Val); END; /*********************�� INTERVAL DAY TO HOUR �Ͳ���**********************/ FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL DAY TO HOUR) RETURN INTEGER IS col_name VARCHAR:=UPPER(ColName); BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_PARSED); SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_INTERVAL_D2H); RETURN BLDIN_NAME_BIND_ID2H(cursors(CurNo).ObjPtr,col_name,TYPE_INTERVAL_D2H,Val); END; /*********************�� INTERVAL HOUR �Ͳ���**********************/ FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL HOUR) RETURN INTEGER IS col_name VARCHAR:=UPPER(ColName); BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_PARSED); SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_INTERVAL_H); RETURN BLDIN_NAME_BIND_IH(cursors(CurNo).ObjPtr,col_name,TYPE_INTERVAL_H,Val); END; /*********************�� INTERVAL DAY TO MINUTE �Ͳ���**********************/ FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL DAY TO MINUTE) RETURN INTEGER IS col_name VARCHAR:=UPPER(ColName); BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_PARSED); SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_INTERVAL_D2M); RETURN BLDIN_NAME_BIND_ID2M(cursors(CurNo).ObjPtr,col_name,TYPE_INTERVAL_D2M,Val); END; /*********************�� INTERVAL HOUR TO MINUTE �Ͳ���**********************/ FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL HOUR TO MINUTE) RETURN INTEGER IS col_name VARCHAR:=UPPER(ColName); BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_PARSED); SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_INTERVAL_H2M); RETURN BLDIN_NAME_BIND_IH2M(cursors(CurNo).ObjPtr,col_name,TYPE_INTERVAL_H2M,Val); END; /*********************�� INTERVAL MINUTE �Ͳ���**********************/ FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL MINUTE) RETURN INTEGER IS col_name VARCHAR:=UPPER(ColName); BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_PARSED); SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_INTERVAL_MI); RETURN BLDIN_NAME_BIND_IMI(cursors(CurNo).ObjPtr,col_name,TYPE_INTERVAL_MI,Val); END; /*********************�� INTERVAL DAY TO SECOND �Ͳ���**********************/ FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL DAY TO SECOND) RETURN INTEGER IS col_name VARCHAR:=UPPER(ColName); BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_PARSED); SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_INTERVAL_D2S); RETURN BLDIN_NAME_BIND_ID2S(cursors(CurNo).ObjPtr,col_name,TYPE_INTERVAL_D2S,Val); END; /*********************�� INTERVAL HOUR TO SECOND �Ͳ���**********************/ FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL HOUR TO SECOND) RETURN INTEGER IS col_name VARCHAR:=UPPER(ColName); BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_PARSED); SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_INTERVAL_H2S); RETURN BLDIN_NAME_BIND_IH2S(cursors(CurNo).ObjPtr,col_name,TYPE_INTERVAL_H2S,Val); END; /*********************�� INTERVAL MINUTE TO SECOND �Ͳ���**********************/ FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL MINUTE TO SECOND) RETURN INTEGER IS col_name VARCHAR:=UPPER(ColName); BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_PARSED); SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_INTERVAL_M2S); RETURN BLDIN_NAME_BIND_IM2S(cursors(CurNo).ObjPtr,col_name,TYPE_INTERVAL_M2S,Val); END; /*********************�� INTERVAL SECOND �Ͳ���**********************/ FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL SECOND) RETURN INTEGER IS col_name VARCHAR:=UPPER(ColName); BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_PARSED); SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_INTERVAL_S); RETURN BLDIN_NAME_BIND_IS(cursors(CurNo).ObjPtr,col_name,TYPE_INTERVAL_S,Val); END; /*********************�� GUID �Ͳ���**********************/ FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val GUID) RETURN INTEGER IS col_name VARCHAR:=UPPER(ColName); BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_PARSED); SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_GUID); RETURN BLDIN_NAME_BIND_GUID(cursors(CurNo).ObjPtr,col_name,TYPE_GUID,Val); END; /*********************�� BINARY �Ͳ���**********************/ FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val BINARY) RETURN INTEGER IS col_name VARCHAR:=UPPER(ColName); BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_PARSED); SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_BINARY); RETURN BLDIN_NAME_BIND_BINARY(cursors(CurNo).ObjPtr,col_name,TYPE_BINARY,Val); END; /*********************�� ROWID �Ͳ���**********************/ FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val ROWID) RETURN INTEGER IS col_name VARCHAR:=UPPER(ColName); BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_PARSED); SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_ROWID); RETURN BLDIN_NAME_BIND_ROWID(cursors(CurNo).ObjPtr,col_name,TYPE_ROWID,Val); END; /***********�����������Boolean***********/ FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT BOOLEAN) RETURN INTEGER IS BEGIN --������ CHECK_CURNO_RANGE_AND_EXIST(CurNo); RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_BOOL,-1); END; /***********�����������TinyInt***********/ FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT TINYINT) RETURN INTEGER IS BEGIN --������ CHECK_CURNO_RANGE_AND_EXIST(CurNo); RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_I1,-1); END; /***********�����������SmallInt***********/ FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT SMALLINT) RETURN INTEGER IS BEGIN --������ CHECK_CURNO_RANGE_AND_EXIST(CurNo); RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_I2,-1); END; /***********�����������Integer***********/ FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTEGER) RETURN INTEGER IS BEGIN --������ CHECK_CURNO_RANGE_AND_EXIST(CurNo); RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_I4,-1); END; /***********�����������Bigint***********/ FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT BIGINT) RETURN INTEGER IS BEGIN --������ CHECK_CURNO_RANGE_AND_EXIST(CurNo); RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_I8,-1); END; /***********�����������Float***********/ FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT FLOAT) RETURN INTEGER IS BEGIN --������ CHECK_CURNO_RANGE_AND_EXIST(CurNo); RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_R4,-1); END; /***********�����������Double***********/ FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT DOUBLE) RETURN INTEGER IS BEGIN --������ CHECK_CURNO_RANGE_AND_EXIST(CurNo); RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_R8,-1); END; /***********�����������NUMERIC***********/ FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT NUMERIC) RETURN INTEGER IS BEGIN --������ CHECK_CURNO_RANGE_AND_EXIST(CurNo); RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_NUMERIC,-1); END; /***********�����������Char***********/ FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT CHAR) RETURN INTEGER IS BEGIN --������ CHECK_CURNO_RANGE_AND_EXIST(CurNo); RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_STR,-1); END; /***********�����������Varchar***********/ FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT VARCHAR) RETURN INTEGER IS BEGIN --������ CHECK_CURNO_RANGE_AND_EXIST(CurNo); RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_STR,-1); END; /***********�����������CLOB***********/ FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT CLOB) RETURN INTEGER IS BEGIN --������ CHECK_CURNO_RANGE_AND_EXIST(CurNo); RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_CLOB,-1); END; /***********�����������BLOB***********/ FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT BLOB) RETURN INTEGER IS BEGIN --������ CHECK_CURNO_RANGE_AND_EXIST(CurNo); RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_BLOB,-1); END; /***********�����������TIME***********/ FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT TIME) RETURN INTEGER IS BEGIN --������ CHECK_CURNO_RANGE_AND_EXIST(CurNo); RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_TIME,-1); END; /***********�����������TIME WITH TIME ZONE ***********/ FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT TIME WITH TIME ZONE) RETURN INTEGER IS BEGIN --������ CHECK_CURNO_RANGE_AND_EXIST(CurNo); RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_TIMEZ,-1); END; /***********�����������Date***********/ FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT DATE) RETURN INTEGER IS BEGIN --������ CHECK_CURNO_RANGE_AND_EXIST(CurNo); RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_DATE,-1); END; /***********�����������Datetime***********/ FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT DATETIME) RETURN INTEGER IS BEGIN --������ CHECK_CURNO_RANGE_AND_EXIST(CurNo); RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_DATETIME,-1); END; /***********�����������DATETIME WITH TIME ZONE***********/ FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT DATETIME WITH TIME ZONE) RETURN INTEGER IS BEGIN --������ CHECK_CURNO_RANGE_AND_EXIST(CurNo); RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_DATETIMEZ,-1); END; /***********����������� INTERVAL YEAR ***********/ FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL YEAR) RETURN INTEGER IS BEGIN --������ CHECK_CURNO_RANGE_AND_EXIST(CurNo); RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_Y,-1); END; /***********����������� INTERVAL YEAR TO MONTH ***********/ FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL YEAR TO MONTH) RETURN INTEGER IS BEGIN --������ CHECK_CURNO_RANGE_AND_EXIST(CurNo); RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_Y2M,-1); END; /***********����������� INTERVAL MONTH ***********/ FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL MONTH) RETURN INTEGER IS BEGIN --������ CHECK_CURNO_RANGE_AND_EXIST(CurNo); RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_M,-1); END; /***********����������� INTERVAL DAY ***********/ FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL DAY) RETURN INTEGER IS BEGIN --������ CHECK_CURNO_RANGE_AND_EXIST(CurNo); RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_D,-1); END; /***********����������� INTERVAL DAY TO HOUR ***********/ FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL DAY TO HOUR) RETURN INTEGER IS BEGIN --������ CHECK_CURNO_RANGE_AND_EXIST(CurNo); RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_D2H,-1); END; /***********����������� INTERVAL HOUR ***********/ FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL HOUR) RETURN INTEGER IS BEGIN --������ CHECK_CURNO_RANGE_AND_EXIST(CurNo); RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_H,-1); END; /***********����������� INTERVAL DAY TO MINUTE ***********/ FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL DAY TO MINUTE) RETURN INTEGER IS BEGIN --������ CHECK_CURNO_RANGE_AND_EXIST(CurNo); RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_D2M,-1); END; /***********����������� INTERVAL HOUR TO MINUTE ***********/ FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL HOUR TO MINUTE) RETURN INTEGER IS BEGIN --������ CHECK_CURNO_RANGE_AND_EXIST(CurNo); RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_H2M,-1); END; /***********����������� INTERVAL MINUTE ***********/ FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL MINUTE) RETURN INTEGER IS BEGIN --������ CHECK_CURNO_RANGE_AND_EXIST(CurNo); RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_MI,-1); END; /***********����������� INTERVAL DAY TO SECOND ***********/ FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL DAY TO SECOND) RETURN INTEGER IS BEGIN --������ CHECK_CURNO_RANGE_AND_EXIST(CurNo); RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_D2S,-1); END; /***********����������� INTERVAL HOUR TO SECOND ***********/ FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL HOUR TO SECOND) RETURN INTEGER IS BEGIN --������ CHECK_CURNO_RANGE_AND_EXIST(CurNo); RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_H2S,-1); END; /***********����������� INTERVAL MINUTE TO SECOND ***********/ FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL MINUTE TO SECOND) RETURN INTEGER IS BEGIN --������ CHECK_CURNO_RANGE_AND_EXIST(CurNo); RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_M2S,-1); END; /***********����������� INTERVAL SECOND ***********/ FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL SECOND) RETURN INTEGER IS BEGIN --������ CHECK_CURNO_RANGE_AND_EXIST(CurNo); RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_S,-1); END; /***********����������� GUID ***********/ FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT GUID) RETURN INTEGER IS BEGIN --������ CHECK_CURNO_RANGE_AND_EXIST(CurNo); RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_GUID,-1); END; /***********����������� BINARY ***********/ FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT BINARY) RETURN INTEGER IS BEGIN --������ CHECK_CURNO_RANGE_AND_EXIST(CurNo); RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_BINARY,-1); END; /***********����������� ROWID ***********/ FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT ROWID) RETURN INTEGER IS BEGIN --������ CHECK_CURNO_RANGE_AND_EXIST(CurNo); RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_ROWID,-1); END; /***********ȡBOOLEAN�ֶ�ֵ***************/ FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT BOOLEAN) RETURN INTEGER IS BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_FETCHED); Var:= BLDIN_COLUMN_VALUE_BOOL(cursors(CurNo).ObjPtr,ColNo,TYPE_BOOL,-1); RETURN 1; END; /***********ȡTinyInt�ֶ�ֵ***************/ FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT TINYINT) RETURN INTEGER IS BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_FETCHED); Var:= BLDIN_COLUMN_VALUE_I1(cursors(CurNo).ObjPtr,ColNo,TYPE_I1,-1); RETURN 1; END; /***********ȡSmallInt�ֶ�ֵ***************/ FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT SMALLINT) RETURN INTEGER IS BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_FETCHED); Var:= BLDIN_COLUMN_VALUE_I2(cursors(CurNo).ObjPtr,ColNo,TYPE_I2,-1); RETURN 1; END; /***********ȡInteger�ֶ�ֵ***************/ FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTEGER) RETURN INTEGER IS BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_FETCHED); Var:= BLDIN_COLUMN_VALUE_I4(cursors(CurNo).ObjPtr,ColNo,TYPE_I4,-1); RETURN 1; END; /***********ȡBigInt�ֶ�ֵ***************/ FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT BIGINT) RETURN INTEGER IS BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_FETCHED); Var:= BLDIN_COLUMN_VALUE_I8(cursors(CurNo).ObjPtr,ColNo,TYPE_I8,-1); RETURN 1; END; /***********ȡFloat�ֶ�ֵ***************/ FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT FLOAT) RETURN INTEGER IS BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_FETCHED); Var:= BLDIN_COLUMN_VALUE_R4(cursors(CurNo).ObjPtr,ColNo,TYPE_R4,-1); RETURN 1; END; /***********ȡDOUBLE�ֶ�ֵ***************/ FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT DOUBLE) RETURN INTEGER IS BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_FETCHED); Var:= BLDIN_COLUMN_VALUE_R8(cursors(CurNo).ObjPtr,ColNo,TYPE_R8,-1); RETURN 1; END; /***********ȡNumeric�ֶ�ֵ***************/ FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT NUMERIC) RETURN INTEGER IS BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_FETCHED); Var:= BLDIN_COLUMN_VALUE_N(cursors(CurNo).ObjPtr,ColNo,TYPE_NUMERIC,-1); RETURN 1; END; /***********ȡChar�ֶ�ֵ***************/ FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT CHAR) RETURN INTEGER IS BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_FETCHED); Var:= BLDIN_COLUMN_VALUE_STR(cursors(CurNo).ObjPtr,ColNo,TYPE_STR,-1); RETURN 1; END; /***********ȡVarchar�ֶ�ֵ***************/ FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT VARCHAR) RETURN INTEGER IS BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_FETCHED); Var:= BLDIN_COLUMN_VALUE_STR(cursors(CurNo).ObjPtr,ColNo,TYPE_STR,-1); RETURN 1; END; /***********ȡCLOB�ֶ�ֵ***************/ FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT CLOB) RETURN INTEGER IS BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_FETCHED); Var:= BLDIN_COLUMN_VALUE_CLOB(cursors(CurNo).ObjPtr,ColNo,TYPE_CLOB,-1); RETURN 1; END; /***********ȡBLOB�ֶ�ֵ***************/ FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT BLOB) RETURN INTEGER IS BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_FETCHED); Var:= BLDIN_COLUMN_VALUE_BLOB(cursors(CurNo).ObjPtr,ColNo,TYPE_BLOB,-1); RETURN 1; END; /***********ȡTIME�ֶ�ֵ***************/ FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT TIME) RETURN INTEGER IS BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_FETCHED); Var:= BLDIN_COLUMN_VALUE_T(cursors(CurNo).ObjPtr,ColNo,TYPE_TIME,-1); RETURN 1; END; /***********ȡTIME WITH TIME ZONE�ֶ�ֵ***************/ FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT TIME WITH TIME ZONE) RETURN INTEGER IS BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_FETCHED); Var:= BLDIN_COLUMN_VALUE_TZ(cursors(CurNo).ObjPtr,ColNo,TYPE_TIMEZ,-1); RETURN 1; END; /***********ȡDATE�ֶ�ֵ***************/ FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT DATE) RETURN INTEGER IS BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_FETCHED); Var:= BLDIN_COLUMN_VALUE_D(cursors(CurNo).ObjPtr,ColNo,TYPE_DATE,-1); RETURN 1; END; /***********ȡDateTime�ֶ�ֵ***************/ FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT DATETIME) RETURN INTEGER IS BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_FETCHED); Var:= BLDIN_COLUMN_VALUE_DT(cursors(CurNo).ObjPtr,ColNo,TYPE_DATETIME,-1); RETURN 1; END; /***********ȡDATETIME WITH TIME ZONE�ֶ�ֵ***************/ FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT DATETIME WITH TIME ZONE) RETURN INTEGER IS BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_FETCHED); Var:= BLDIN_COLUMN_VALUE_DTZ(cursors(CurNo).ObjPtr,ColNo,TYPE_DATETIMEZ,-1); RETURN 1; END; /***********ȡ INTERVAL YEAR �ֶ�ֵ***************/ FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL YEAR) RETURN INTEGER IS BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_FETCHED); Var:= BLDIN_COLUMN_VALUE_IY(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_Y,-1); RETURN 1; END; /***********ȡ INTERVAL YEAR TO MONTH �ֶ�ֵ***************/ FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL YEAR TO MONTH) RETURN INTEGER IS BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_FETCHED); Var:= BLDIN_COLUMN_VALUE_IY2M(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_Y2M,-1); RETURN 1; END; /***********ȡ INTERVAL MONTH�ֶ�ֵ***************/ FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL MONTH) RETURN INTEGER IS BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_FETCHED); Var:= BLDIN_COLUMN_VALUE_IM(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_M,-1); RETURN 1; END; /***********ȡ INTERVAL DAY �ֶ�ֵ***************/ FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL DAY) RETURN INTEGER IS BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_FETCHED); Var:= BLDIN_COLUMN_VALUE_ID(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_D,-1); RETURN 1; END; /***********ȡ INTERVAL DAY TO HOUR �ֶ�ֵ***************/ FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL DAY TO HOUR) RETURN INTEGER IS BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_FETCHED); Var:= BLDIN_COLUMN_VALUE_ID2H(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_D2H,-1); RETURN 1; END; /***********ȡ INTERVAL HOUR �ֶ�ֵ***************/ FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL HOUR) RETURN INTEGER IS BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_FETCHED); Var:= BLDIN_COLUMN_VALUE_IH(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_H,-1); RETURN 1; END; /***********ȡ INTERVAL DAY TO MINUTE �ֶ�ֵ***************/ FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL DAY TO MINUTE) RETURN INTEGER IS BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_FETCHED); Var:= BLDIN_COLUMN_VALUE_ID2M(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_D2M,-1); RETURN 1; END; /***********ȡ INTERVAL HOUR TO MINUTE �ֶ�ֵ***************/ FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL HOUR TO MINUTE) RETURN INTEGER IS BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_FETCHED); Var:= BLDIN_COLUMN_VALUE_IH2M(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_H2M,-1); RETURN 1; END; /***********ȡ INTERVAL MINUTE �ֶ�ֵ***************/ FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL MINUTE) RETURN INTEGER IS BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_FETCHED); Var:= BLDIN_COLUMN_VALUE_IMI(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_MI,-1); RETURN 1; END; /***********ȡ INTERVAL DAY TO SECOND �ֶ�ֵ***************/ FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL DAY TO SECOND) RETURN INTEGER IS BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_FETCHED); Var:= BLDIN_COLUMN_VALUE_ID2S(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_D2S,-1); RETURN 1; END; /***********ȡ INTERVAL HOUR TO SECOND�ֶ�ֵ***************/ FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL HOUR TO SECOND) RETURN INTEGER IS BEGIN --������ CHECK_CURNO(CurNo,STMT_STATE_FETCHED); Var:= BLDIN_COLUMN_VALUE_IH2S(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_H2S,-1); RETURN 1; END; /***********ȡ INTERVAL MINUTE TO SECOND�ֶ�ֵ***************/ FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL MINUTE TO SECOND) RETURN INTEGER IS BEGIN --������ CHECK_CURNO_RANGE_AND_EXIST(CurNo); Var:= BLDIN_COLUMN_VALUE_IM2S(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_M2S,-1); RETURN 1; END; /***********ȡ INTERVAL SECOND�ֶ�ֵ***************/ FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL SECOND) RETURN INTEGER IS BEGIN --������ CHECK_CURNO_RANGE_AND_EXIST(CurNo); Var:= BLDIN_COLUMN_VALUE_IS(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_S,-1); RETURN 1; END; /***********ȡ GUID�ֶ�ֵ***************/ FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT GUID) RETURN INTEGER IS BEGIN --������ CHECK_CURNO_RANGE_AND_EXIST(CurNo); Var:= BLDIN_COLUMN_VALUE_GUID(cursors(CurNo).ObjPtr,ColNo,TYPE_GUID,-1); RETURN 1; END; /***********ȡ BINARY �ֶ�ֵ***************/ FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT BINARY) RETURN INTEGER IS BEGIN --������ CHECK_CURNO_RANGE_AND_EXIST(CurNo); Var:= BLDIN_COLUMN_VALUE_BINARY(cursors(CurNo).ObjPtr,ColNo,TYPE_BINARY,-1); RETURN 1; END; /***********ȡ ROWID �ֶ�ֵ***************/ FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT ROWID) RETURN INTEGER IS BEGIN --������ CHECK_CURNO_RANGE_AND_EXIST(CurNo); Var:= BLDIN_COLUMN_VALUE_ROWID(cursors(CurNo).ObjPtr,ColNo,TYPE_ROWID,-1); RETURN 1; END; BEGIN Cursors.extend(100); END SYSDBA.DBMS_SQL; / /*************����CTX_DOC��******************************/ CREATE OR REPLACE PACKAGE "SYSDBA"."CTX_DOC" AUTHID CURRENT_USER COMMENT 'ȫ�ļ���֧�ְ�' IS SUBTYPE TOKEN_REC IS RECORD(TOKEN VARCHAR(64),OFFSET INTEGER,LENGTH INTEGER); SUBTYPE TOKEN_REC2 IS RECORD(TOKEN VARCHAR(64),REPET_N INTEGER,LENGTH INTEGER); SUBTYPE TOKEN_TAB IS TABLE OF TOKEN_REC; SUBTYPE TOKEN_TAB2 IS TABLE OF TOKEN_REC2; SP_MAX_LEN CONSTANT INTEGER := 0; --����ʻ��� SP_MIN_LEN CONSTANT INTEGER := 1; --����̴ʻ��� SP_SUB_WORD1 CONSTANT INTEGER := 2; --���������ʵ������Ӵ� SP_SUB_WORD2 CONSTANT INTEGER := 4; --�����������з�ͷ���Ӵ� SP_ASCII CONSTANT INTEGER := 8; --�������ascii�� SP_DIGIT CONSTANT INTEGER := 16; --����������ִ� SPILIT_POLICY INTEGER:= 0; --MAX_LEN VOCA_NAME VARCHAR(20):='STD_VOC'; KEY_TYPE VARCHAR(10):='PRIMARY'; PROCEDURE SET_KEY_TYPE(key_type IN VARCHAR2); --���ü����� PROCEDURE SET_SPLIT_POLICY(_policy IN INTEGER);--���÷ִʲ��� PROCEDURE TOKENS(index_name IN VARCHAR2, textkey IN VARCHAR2, restab IN OUT TOKEN_TAB); PROCEDURE TOKENS(index_name IN VARCHAR2, textkey IN VARCHAR2, restab IN VARCHAR2, query_id IN NUMBER DEFAULT 0); PROCEDURE TOKENS(content IN VARCHAR2, restab IN OUT TOKEN_TAB); PROCEDURE TOKENS(content IN CLOB, restab IN OUT TOKEN_TAB); PROCEDURE TOKENS2(index_name IN VARCHAR2, textkey IN VARCHAR2, restab IN OUT TOKEN_TAB); PROCEDURE TOKENS2(index_name IN VARCHAR2, textkey IN VARCHAR2, restab IN VARCHAR2, query_id IN NUMBER DEFAULT 0); PROCEDURE TOKENS2(content IN VARCHAR2, restab IN OUT TOKEN_TAB); PROCEDURE TOKENS2(content IN CLOB, restab IN OUT TOKEN_TAB); END "SYSDBA"."CTX_DOC"; / /*************����CTX_DOC����******************************/ CREATE OR REPLACE PACKAGE BODY "SYSDBA"."CTX_DOC" IS PROCEDURE SET_KEY_TYPE(_key_type IN VARCHAR2) IS BEGIN key_type:=_key_type; END; PROCEDURE SET_SPLIT_POLICY(_policy IN INTEGER) IS BEGIN SPILIT_POLICY:=_policy; END; PROCEDURE BLDIN_TOKENS( voca_name IN VARCHAR2, content IN VARCHAR, restab IN OUT TOKEN_TAB, sp_policy IN INTEGER) IS LANGUAGE "C" NAME "BLDIN_TOKENS1"; PROCEDURE BLDIN_TOKENS2( voca_name IN VARCHAR2, content IN VARCHAR, restab IN OUT TOKEN_TAB, sp_policy IN INTEGER) IS LANGUAGE "C" NAME "BLDIN_TOKENS2"; PROCEDURE TOKENS(index_name IN VARCHAR2, textkey IN VARCHAR2, restab IN OUT TOKEN_TAB) IS BEGIN NULL; END; PROCEDURE TOKENS(index_name IN VARCHAR2, textkey IN VARCHAR2, restab IN VARCHAR2, query_id IN NUMBER DEFAULT 0) IS BEGIN NULL; END; PROCEDURE TOKENS(content IN VARCHAR2, restab IN OUT TOKEN_TAB) IS BEGIN BLDIN_TOKENS(voca_name,content,restab,SPILIT_POLICY); END; PROCEDURE TOKENS(content IN CLOB, restab IN OUT TOKEN_TAB) IS BEGIN BLDIN_TOKENS(voca_name,content,restab,SPILIT_POLICY); END; PROCEDURE TOKENS2(index_name IN VARCHAR2, textkey IN VARCHAR2, restab IN OUT TOKEN_TAB) IS BEGIN NULL; END; PROCEDURE TOKENS2(index_name IN VARCHAR2, textkey IN VARCHAR2, restab IN VARCHAR2, query_id IN NUMBER DEFAULT 0) IS BEGIN NULL; END; PROCEDURE TOKENS2(content IN VARCHAR2, restab IN OUT TOKEN_TAB) IS BEGIN BLDIN_TOKENS2(voca_name,content,restab,SPILIT_POLICY); END; PROCEDURE TOKENS2(content IN CLOB, restab IN OUT TOKEN_TAB) IS BEGIN BLDIN_TOKENS2(voca_name,content,restab,SPILIT_POLICY); END; END "SYSDBA"."CTX_DOC"; / /***********����DBMS_LOB��(����֧�ִ�������)***************/ ----��ͷ CREATE OR REPLACE PACKAGE SYSDBA.DBMS_LOB IS FUNCTION GETLENGTH(lob_loc BLOB) RETURN INTEGER; FUNCTION GETLENGTH(lob_loc CLOB) RETURN INTEGER; PROCEDURE READ(lob_loc BLOB,AMOUNT INTEGER,OFFSET INTEGER, OUT_BUFF OUT VARCHAR); PROCEDURE READ(lob_loc CLOB,AMOUNT INTEGER,OFFSET INTEGER, OUT_BUFF OUT VARCHAR); END SYSDBA.DBMS_LOB; / ----���� CREATE PACKAGE BODY SYSDBA.DBMS_LOB IS FUNCTION GETLENGTH(lob_loc BLOB) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_BLOB_GETLENGTH"; FUNCTION GETLENGTH(lob_loc CLOB) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_CLOB_GETLENGTH"; PROCEDURE READ(lob_loc BLOB,AMOUNT INTEGER,OFFSET INTEGER, OUT_BUFF OUT VARCHAR) IS LANGUAGE "C" NAME "BLDIN_BLOB_READ"; PROCEDURE READ(lob_loc CLOB,AMOUNT INTEGER,OFFSET INTEGER, OUT_BUFF OUT VARCHAR) IS LANGUAGE "C" NAME "BLDIN_CLOB_READ"; END SYSDBA.DBMS_LOB; / -----UTL_RAW��-------------------- CREATE PACKAGE SYSDBA.UTL_RAW IS big_endian CONSTANT PLS_INTEGER := 1; little_endian CONSTANT PLS_INTEGER := 2; machine_endian CONSTANT PLS_INTEGER := 3; FUNCTION BIT_AND (r1 IN RAW, r2 IN RAW) RETURN RAW; FUNCTION BIT_COMPLEMENT (r1 IN RAW, r2 IN RAW) RETURN RAW; FUNCTION BIT_OR (r1 IN RAW, r2 IN RAW) RETURN RAW; FUNCTION BIT_XOR (r1 IN RAW, r2 IN RAW) RETURN RAW; FUNCTION CAST_FROM_BINARY_DOUBLE (n IN BINARY_DOUBLE, endianess IN BINARY_INTEGER DEFAULT 1) RETURN RAW; FUNCTION CAST_FROM_BINARY_FLOAT (n IN BINARY_FLOAT, endianess IN BINARY_INTEGER DEFAULT 1) RETURN RAW; FUNCTION CAST_FROM_BINARY_INTEGER (n IN BINARY_INTEGER, endianess IN BINARY_INTEGER DEFAULT 1) RETURN RAW; FUNCTION CAST_FROM_NUMBER (n IN NUMBER) RETURN RAW; FUNCTION CAST_TO_BINARY_DOUBLE (r IN RAW,endianess IN BINARY_INTEGER DEFAULT 1) RETURN BINARY_DOUBLE; FUNCTION CAST_TO_BINARY_FLOAT (r IN RAW, endianess IN BINARY_INTEGER DEFAULT 1) RETURN BINARY_FLOAT; FUNCTION CAST_TO_BINARY_INTEGER (r IN RAW, endianess IN BINARY_INTEGER DEFAULT 1) RETURN BINARY_INTEGER; FUNCTION CAST_TO_NUMBER (r IN RAW) RETURN NUMBER; FUNCTION CAST_TO_NVARCHAR2 (r IN RAW) RETURN NVARCHAR2; FUNCTION CAST_TO_RAW (c IN VARCHAR2) RETURN RAW; FUNCTION CAST_TO_VARCHAR2 (r IN RAW) RETURN VARCHAR2; FUNCTION COMPARE (r1 IN RAW,r2 IN RAW,pad IN RAW DEFAULT NULL) RETURN INTEGER; FUNCTION CONCAT (r1 IN RAW DEFAULT NULL, r2 IN RAW DEFAULT NULL, r3 IN RAW DEFAULT NULL, r4 IN RAW DEFAULT NULL, r5 IN RAW DEFAULT NULL, r6 IN RAW DEFAULT NULL, r7 IN RAW DEFAULT NULL, r8 IN RAW DEFAULT NULL, r9 IN RAW DEFAULT NULL, r10 IN RAW DEFAULT NULL, r11 IN RAW DEFAULT NULL, r12 IN RAW DEFAULT NULL) RETURN RAW; FUNCTION CONVERT(r IN RAW,to_charset IN VARCHAR2,from_charset IN VARCHAR2) RETURN RAW; FUNCTION COPIES (r IN RAW,n IN INTEGER) RETURN RAW; FUNCTION LENGTH (r IN RAW) RETURN INTEGER; FUNCTION OVERLAY(overlay_str IN RAW,target IN RAW, pos IN BINARY_INTEGER DEFAULT 1, len IN BINARY_INTEGER DEFAULT NULL, pad IN RAW DEFAULT NULL) RETURN RAW; FUNCTION REVERSE (r IN RAW) RETURN RAW; FUNCTION SUBSTR (r IN RAW,pos IN BINARY_INTEGER,len IN BINARY_INTEGER DEFAULT NULL) RETURN RAW; FUNCTION TRANSLATE (r IN RAW,from_set IN RAW,to_set IN RAW) RETURN RAW; FUNCTION TRANSLITERATE (r IN RAW,to_set IN RAW DEFAULT NULL,from_set IN RAW DEFAULT NULL,pad IN RAW DEFAULT NULL) RETURN RAW; FUNCTION XRANGE (start_byte IN RAW DEFAULT NULL,end_byte IN RAW DEFAULT NULL) RETURN RAW; END SYSDBA.UTL_RAW; / CREATE PACKAGE BODY SYSDBA.UTL_RAW IS FUNCTION BIT_AND (r1 IN RAW, r2 IN RAW) RETURN RAW IS LANGUAGE "C" NAME "BLDIN_RAW_BIT_AND"; FUNCTION BIT_COMPLEMENT (r1 IN RAW, r2 IN RAW) RETURN RAW IS LANGUAGE "C" NAME "BLDIN_RAW_COMPLEMENT"; FUNCTION BIT_OR (r1 IN RAW, r2 IN RAW) RETURN RAW IS LANGUAGE "C" NAME "BLDIN_RAW_BIT_OR"; FUNCTION BIT_XOR (r1 IN RAW, r2 IN RAW) RETURN RAW IS LANGUAGE "C" NAME "BLDIN_RAW_BIT_XOR"; FUNCTION CAST_FROM_BINARY_DOUBLE (n IN BINARY_DOUBLE, endianess IN BINARY_INTEGER DEFAULT 1) RETURN RAW IS LANGUAGE "C" NAME "BLDIN_DOUBLE2RAW"; FUNCTION CAST_FROM_BINARY_FLOAT (n IN BINARY_FLOAT, endianess IN BINARY_INTEGER DEFAULT 1) RETURN RAW IS LANGUAGE "C" NAME "BLDIN_FLOAT2RAW"; FUNCTION CAST_FROM_BINARY_INTEGER (n IN BINARY_INTEGER, endianess IN BINARY_INTEGER DEFAULT 1) RETURN RAW IS LANGUAGE "C" NAME "BLDIN_INTEGER2RAW"; FUNCTION CAST_FROM_NUMBER (n IN NUMBER) RETURN RAW IS LANGUAGE "C" NAME "BLDIN_NUMERIC2RAW"; FUNCTION CAST_TO_BINARY_DOUBLE (r IN RAW,endianess IN BINARY_INTEGER DEFAULT 1) RETURN BINARY_DOUBLE IS LANGUAGE "C" NAME "BLDIN_RAW2DOUBLE"; FUNCTION CAST_TO_BINARY_FLOAT (r IN RAW, endianess IN BINARY_INTEGER DEFAULT 1) RETURN BINARY_FLOAT IS LANGUAGE "C" NAME "BLDIN_RAW2FLOAT"; FUNCTION CAST_TO_BINARY_INTEGER (r IN RAW, endianess IN BINARY_INTEGER DEFAULT 1) RETURN BINARY_INTEGER IS LANGUAGE "C" NAME "BLDIN_RAW2INTEGER"; FUNCTION CAST_TO_NUMBER (r IN RAW) RETURN NUMBER IS LANGUAGE "C" NAME "BLDIN_RAW2NUMERIC"; FUNCTION CAST_TO_NVARCHAR2 (r IN RAW) RETURN NVARCHAR2 IS LANGUAGE "C" NAME "BLDIN_RAW2NVARCHAR2"; FUNCTION CAST_TO_RAW (c IN VARCHAR2) RETURN RAW IS LANGUAGE "C" NAME "BLDIN_VARCHAR22RAW"; FUNCTION CAST_TO_VARCHAR2 (r IN RAW) RETURN VARCHAR2 IS LANGUAGE "C" NAME "BLDIN_RAW2VARCHAE2"; FUNCTION COMPARE (r1 IN RAW,r2 IN RAW,pad IN RAW DEFAULT NULL) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_RAW_COMPARE"; FUNCTION CONCAT (r1 IN RAW DEFAULT NULL, r2 IN RAW DEFAULT NULL, r3 IN RAW DEFAULT NULL, r4 IN RAW DEFAULT NULL, r5 IN RAW DEFAULT NULL, r6 IN RAW DEFAULT NULL, r7 IN RAW DEFAULT NULL, r8 IN RAW DEFAULT NULL, r9 IN RAW DEFAULT NULL, r10 IN RAW DEFAULT NULL, r11 IN RAW DEFAULT NULL, r12 IN RAW DEFAULT NULL) RETURN RAW IS LANGUAGE "C" NAME "BLDIN_RAW_CONCAT"; FUNCTION CONVERT(r IN RAW,to_charset IN VARCHAR2,from_charset IN VARCHAR2) RETURN RAW IS LANGUAGE "C" NAME "BLDIN_RAW_CONVERT"; FUNCTION COPIES (r IN RAW,n IN INTEGER) RETURN RAW IS LANGUAGE "C" NAME "BLDIN_RAW_COPYS"; FUNCTION LENGTH (r IN RAW) RETURN INTEGER IS LANGUAGE "C" NAME "BLDIN_RAW_LENGTH"; FUNCTION OVERLAY(overlay_str IN RAW,target IN RAW, pos IN BINARY_INTEGER DEFAULT 1, len IN BINARY_INTEGER DEFAULT NULL, pad IN RAW DEFAULT NULL) RETURN RAW IS LANGUAGE "C" NAME "BLDIN_RAW_OVERLAY"; FUNCTION REVERSE (r IN RAW) RETURN RAW IS LANGUAGE "C" NAME "BLDIN_RAW_REVERSE"; FUNCTION SUBSTR (r IN RAW,pos IN BINARY_INTEGER,len IN BINARY_INTEGER DEFAULT NULL) RETURN RAW IS LANGUAGE "C" NAME "BLDIN_RAW_SUBSTR"; FUNCTION TRANSLATE (r IN RAW,from_set IN RAW,to_set IN RAW) RETURN RAW IS LANGUAGE "C" NAME "BLDIN_RAW_TRANSLATE"; FUNCTION TRANSLITERATE (r IN RAW,to_set IN RAW DEFAULT NULL,from_set IN RAW DEFAULT NULL,pad IN RAW DEFAULT NULL) RETURN RAW IS LANGUAGE "C" NAME "BLDIN_RAW_TRANSLITERATE"; FUNCTION XRANGE (start_byte IN RAW DEFAULT NULL,end_byte IN RAW DEFAULT NULL) RETURN RAW IS LANGUAGE "C" NAME "BLDIN_RAW_XRANGE"; END SYSDBA.UTL_RAW; / CREATE OR REPLACE PACKAGE SYSDBA.DBMS_REPLICATION IS PROCEDURE CREATE_MODIFY_SOURCE(SCHEMA_NAME VARCHAR,TABLE_NAME VARCHAR); PROCEDURE DROP_MODIFY_SOURCE(SCHEMA_NAME VARCHAR,TABLE_NAME VARCHAR); PROCEDURE CREATE_SUBSCRIBER(SUBSCRIBER_NAME VARCHAR,USEER_NAME VARCHAR); PROCEDURE DROP_SUBSCRIBER(SUBSCRIBER_NAME VARCHAR,USEER_NAME VARCHAR); PROCEDURE SWITCH_FILE(); PROCEDURE POLL_MODIFY_DATA(SUBSCRIBER_NAME VARCHAR,PARTI_NO INTEGER,FILTER VARCHAR,POLL_LEN BIGINT,KEEP_POS BOOLEAN,FNO INTEGER DEFAULT -1,FPOS BIGINT DEFAULT 0,RET_TYPE INTEGER DEFAULT 0); PROCEDURE DUMP_TABLE( TABLE_NAME VARCHAR, --���� FILTER VARCHAR, --where ����(��дwhere�ؼ���) PATH VARCHAR, --�������� INSERT SQL �����ݿ������ļ�(NULLʱ��������ļ�) IS_SEND BOOLEAN DEFAULT false, -- �Ƿ����� INSERT SQL�Ľ���� ���ؿͻ��� IS_DUMP_META BOOLEAN DEFAULT false);-- �Ƿ�������ǰ���������DDL END SYSDBA.DBMS_REPLICATION; / CREATE OR REPLACE PACKAGE BODY SYSDBA.DBMS_REPLICATION IS PROCEDURE CREATE_MODIFY_SOURCE(SCHEMA_NAME VARCHAR,TABLE_NAME VARCHAR) IS LANGUAGE "C" NAME "BLDIN_CREATE_MODIFY_SOURCE"; PROCEDURE DROP_MODIFY_SOURCE(SCHEMA_NAME VARCHAR,TABLE_NAME VARCHAR) IS LANGUAGE "C" NAME "BLDIN_DROP_MODIFY_SOURCE"; PROCEDURE CREATE_SUBSCRIBER(SUBSCRIBER_NAME VARCHAR,USEER_NAME VARCHAR) IS LANGUAGE "C" NAME "BLDIN_CREATE_SUBSCRIBER"; PROCEDURE DROP_SUBSCRIBER(SUBSCRIBER_NAME VARCHAR,USEER_NAME VARCHAR) IS LANGUAGE "C" NAME "BLDIN_DROP_SUBSCRIBER"; PROCEDURE SWITCH_FILE() IS LANGUAGE "C" NAME "BLDIN_SWITCH_FILE"; PROCEDURE POLL_MODIFY_DATA(SUBSCRIBER_NAME VARCHAR,PARTI_NO INTEGER,FILTER VARCHAR,POLL_LEN BIGINT,KEEP_POS BOOLEAN,FNO INTEGER DEFAULT -1,FPOS BIGINT DEFAULT 0,RET_TYPE INTEGER DEFAULT 0) IS LANGUAGE "C" NAME "BLDIN_POLL_MODIFY_DATA"; PROCEDURE DUMP_TABLE(TABLE_NAME VARCHAR,FILTER VARCHAR,PATH VARCHAR,IS_SEND BOOLEAN DEFAULT false,IS_DUMP_META BOOLEAN DEFAULT false) IS LANGUAGE "C" NAME "BLDIN_DUMP_TABLE"; END SYSDBA.DBMS_REPLICATION; / CREATE OR REPLACE PACKAGE SYSDBA.DBMS_CRYPTO IS -- hash�㷨 HASH_MD4 INTEGER := 1; HASH_MD5 INTEGER := 2; HASH_SH1 INTEGER := 3; -- ��Ϣ��֤��hash��ʽ HMAC_MD5 INTEGER := 1; HMAC_SH1 INTEGER := 2; -- ������㷨 ENCRYPT_DES INTEGER := 1; -- 0x0001 ENCRYPT_3DES_2KEY INTEGER := 2; -- 0x0002 ENCRYPT_3DES INTEGER := 3; -- 0x0003 ENCRYPT_AES INTEGER := 4; -- 0x0004 ENCRYPT_PBE_MD5DES INTEGER := 5; -- 0x0005 ENCRYPT_AES128 INTEGER := 6; -- 0x0006 ENCRYPT_AES192 INTEGER := 7; -- 0x0007 ENCRYPT_AES256 INTEGER := 8; -- 0x0008 -- �����ģʽ CHAIN_CBC INTEGER := 256; -- 0x0100 CHAIN_CFB INTEGER := 512; -- 0x0200 CHAIN_ECB INTEGER := 768; -- 0x0300 CHAIN_OFB INTEGER := 1024; -- 0x0400 -- �������䷽ʽ PAD_PKCS5 INTEGER := 4096; -- 0x1000 PAD_NONE INTEGER := 8192; -- 0x2000 PAD_ZERO INTEGER := 12288; -- 0x3000 PAD_SELF INTEGER := 16384; -- 0x4000 -- �������㷨 ENCRYPT_RC4 INTEGER := 129; -- 0x0081 -- ���ü����� DES_CBC_PKCS5 INTEGER := ENCRYPT_DES+ CHAIN_CBC+ PAD_PKCS5; DES3_CBC_PKCS5 INTEGER := ENCRYPT_3DES+ CHAIN_CBC+ PAD_PKCS5; AES_CBC_PKCS5 INTEGER := ENCRYPT_AES+ CHAIN_CBC+ PAD_PKCS5; --���ܽӿ� FUNCTION Encrypt (src IN RAW,typ IN INTEGER, key IN RAW,iv IN RAW DEFAULT NULL) RETURN RAW; FUNCTION Encrypt (src IN VARCHAR,typ IN INTEGER, key IN VARCHAR,iv IN VARCHAR DEFAULT NULL) RETURN RAW; PROCEDURE Encrypt (dst IN OUT BLOB,src IN BLOB,typ IN INTEGER,key IN RAW,iv IN RAW DEFAULT NULL); PROCEDURE Encrypt (dst IN OUT BLOB,src IN CLOB ,typ IN INTEGER,key IN RAW,iv IN RAW DEFAULT NULL); --���ܽӿ� FUNCTION Decrypt (src IN RAW,typ IN INTEGER,key IN RAW,iv IN RAW DEFAULT NULL)RETURN RAW; FUNCTION Decrypt (src IN RAW,typ IN INTEGER,key IN VARCHAR,iv IN VARCHAR DEFAULT NULL)RETURN VARCHAR; PROCEDURE Decrypt (dst IN OUT BLOB,src IN BLOB,typ IN INTEGER,key IN RAW,iv IN RAW DEFAULT NULL); PROCEDURE Decrypt (dst IN OUT CLOB,src IN BLOB,typ IN INTEGER,key IN RAW,iv IN RAW DEFAULT NULL); --hash �ӿ� FUNCTION Hash (src IN RAW,typ IN INTEGER)RETURN RAW ; FUNCTION Hash (src IN BLOB,typ IN INTEGER)RETURN RAW ; FUNCTION Hash (src IN CLOB,typ IN INTEGER)RETURN RAW ; --��Ϣ��֤�� FUNCTION Mac (src IN RAW,typ IN INTEGER,key IN RAW)RETURN RAW; FUNCTION Mac (src IN BLOB,typ IN INTEGER,key IN RAW)RETURN RAW; FUNCTION Mac (src IN CLOB,typ IN INTEGER,key IN RAW)RETURN RAW; --������� FUNCTION RandomBytes (number_bytes IN INTEGER) RETURN RAW; FUNCTION RandomNumber RETURN NUMBER; FUNCTION RandomInteger RETURN INTEGER; END SYSDBA.DBMS_CRYPTO; / CREATE OR REPLACE PACKAGE BODY SYSDBA.DBMS_CRYPTO IS FUNCTION Encrypt (src IN VARCHAR,typ IN INTEGER, key IN VARCHAR,iv IN VARCHAR DEFAULT NULL) RETURN RAW IS LANGUAGE "C" NAME "BLDIN_ENCRYPT1"; FUNCTION Decrypt (src IN RAW,typ IN INTEGER,key IN VARCHAR,iv IN VARCHAR DEFAULT NULL) RETURN VARCHAR IS LANGUAGE "C" NAME "BLDIN_DECRYPT1"; FUNCTION Encrypt (src IN RAW,typ IN INTEGER, key IN RAW,iv IN RAW DEFAULT NULL) RETURN RAW IS LANGUAGE "C" NAME "BLDIN_ENCRYPT1"; FUNCTION Decrypt (src IN RAW,typ IN INTEGER,key IN RAW,iv IN RAW DEFAULT NULL) RETURN RAW IS LANGUAGE "C" NAME "BLDIN_DECRYPT1"; END SYSDBA.DBMS_CRYPTO; / CREATE OR REPLACE PACKAGE "SYSDBA"."DBMS_BACKUP" COMMENT '����Ӧ�ó����' IS /** ����: planname ���ݼƻ����� plantype �������� ϵͳ���ݣ�BAK��or �����ݣ�EXP�� path �����ļ����·������ʱֻ֧�ַ�����������·������������֧�ֱ����ͻ��� starttime �ƻ���ʼʱ�� period �ƻ�ִ�����ڣ�����Ϊ��λ **/ PROCEDURE Create_Plan(planname VARCHAR, plantype VARCHAR, path VARCHAR, starttime DATETIME, period INTERVAL DAY TO MINUTE); /** ����: planname ���ݼƻ����� ena true�̬��false����̬��ϵͳ���ҽ���һ���ƻ�Ϊ�̬�� **/ PROCEDURE Enable_Plan(planname VARCHAR, ena BOOLEAN); /** ����: planname ���ݼƻ����ƣ�����ɾ���̬�ƻ���ɾ��ʱͬʱɾ���ƻ���������Ŀ **/ PROCEDURE Drop_Plan(planname VARCHAR); /** ϵͳ���ݣ�BAK������ӿ�,����������ȫ����ʽ ����: planname ���ݼƻ����� filename ���������ļ��� time_offset ����ڼƻ���ʼʱ���ʱ��ƫ�ƣ�����Ϊ��λ�������ܳ����ƻ����� iperiod �ƻ�ִ�����ڣ�����Ϊ��λ,ȫ��ʱ�˲���ΪNULL **/ PROCEDURE Add_Backup_Item(planname VARCHAR,filename VARCHAR, time_offset INTERVAL DAY TO MINUTE); PROCEDURE Add_Backup_Inc_Item(planname VARCHAR,time_offset INTERVAL DAY TO MINUTE,iperiod INTERVAL DAY TO MINUTE DEFAULT NULL); /** �����ݣ�EXP������ӿ�,�����⼶�ͱ��� ����: planname ���ݼƻ����� obj_name ��������� obj_type ���ݶ������� ȡֵ��DATABASE,TABLE) filename ���������ļ������������·����Ϣ�� time_offset ����ڼƻ���ʼʱ���ʱ��ƫ�ƣ�����Ϊ��λ�������ܳ����ƻ����� **/ PROCEDURE Add_Export_Item(planname VARCHAR,obj_name VARCHAR, obj_type VARCHAR, filename VARCHAR,time_offset INTERVAL DAY TO MINUTE); /** �ļ���������ӽӿ� ����: planname ���ݼƻ����� filename ���������ļ������������·����Ϣ�� bak_count �����ļ��������� optype �����ļ�������ʽDELETE��MOVE dstpath MOVE �����ǵ�Ŀ��·�� **/ PROCEDURE Add_File_Item(planname VARCHAR,filename VARCHAR, bak_count INTEGER,optype VARCHAR,dstpath VARCHAR DEFAULT NULL); /** ɾ��ϵͳ���ݼƻ����� ����: planname ���ݼƻ����� item_n �����ţ�����ʱ�Զ����ɣ� **/ PROCEDURE Drop_Item(planname VARCHAR, item_n INTEGER); /** ɾ��������������ļ��������� ����: planname ���ݼƻ����� objtype �������� ȡֵ��'DATABASE','TABLE','FILE'�� **/ PROCEDURE Alter_Plan_Del_Item(planname VARCHAR,objtype VARCHAR,objname VARCHAR); /** ���üƻ���ǰ��Ŀ ����: planname ���ݼƻ����� curr_item ��ǰ��Ŀ��� **/ PROCEDURE alter_modify_curr_item(planname VARCHAR,curr_item INTEGER); /** �����´�����ʱ�� ����: planname ���ݼƻ����� curr_item ��ǰ��Ŀ��� next_run_time �´�����ʱ�� istart_t ������ʼʱ�� **/ PROCEDURE alter_modify_run_time(planname VARCHAR,curr_item INTEGER,next_run_time DATETIME,istart_t DATETIME DEFAULT NULL); /** ���ݼƻ�ִ�к��� **/ PROCEDURE Run(); /** ��־�ļ�ɾ���ӿڣ���δʹ�� **/ PROCEDURE Del_xfn(); PROCEDURE FILE_OPTION(PATH VARCHAR,OBJ_NAME VARCHAR,BAK_COUNT INT,OP_TYPE VARCHAR,PLAN_NAME VARCHAR,ITEM_NO INT); END "SYSDBA"."DBMS_BACKUP"; / CREATE OR Replace Package Body "DBMS_BACKUP" IS /************�������ݼƻ�**********/ PROCEDURE Create_Plan(planname VARCHAR, plantype VARCHAR, path VARCHAR, starttime DATETIME, period INTERVAL DAY TO MINUTE) IS LANGUAGE "C" NAME "BLDIN_BAK_CREATE_PLAN"; /*************���ñ��ݼƻ��Ļ��־************/ PROCEDURE Enable_Plan(planname VARCHAR, b boolean) IS LANGUAGE "C" NAME "BLDIN_BAK_MODIFY_PLAN_STATE"; /************ɾ�����ݼƻ�*******************/ PROCEDURE Drop_Plan(planname VARCHAR) IS LANGUAGE "C" NAME "BLDIN_BAK_DROP_PLAN"; /************����ȫ������Ŀ*************/ PROCEDURE Add_Backup_Item(planname VARCHAR, filename VARCHAR, time_offset INTERVAL DAY TO MINUTE) IS LANGUAGE "C" NAME "BLDIN_BAK_ADD_BAK_ITEM"; /************��������������Ŀ*************/ PROCEDURE Add_Backup_Inc_Item(planname VARCHAR, time_offset INTERVAL DAY TO MINUTE, iperiod INTERVAL DAY TO MINUTE DEFAULT NULL) IS LANGUAGE "C" NAME "BLDIN_BAK_ADD_INC_ITEM"; /************���ӵ�����Ŀ*************/ PROCEDURE Add_Export_Item(planname VARCHAR, obj_name VARCHAR, obj_type VARCHAR, filename VARCHAR, time_offset INTERVAL DAY TO MINUTE) IS LANGUAGE "C" NAME "BLDIN_BAK_ADD_EXP_ITEM"; /************�����ļ�������Ŀ***************/ PROCEDURE Add_File_Item(planname VARCHAR, filename VARCHAR, bak_count INTEGER, optype VARCHAR, dstpath VARCHAR DEFAULT NULL) IS LANGUAGE "C" NAME "BLDIN_BAK_ADD_FILE_ITEM"; /************ɾ����Ŀ****************/ PROCEDURE Drop_Item(planname VARCHAR, item_n INTEGER) IS LANGUAGE "C" NAME "BLDIN_BAK_DROP_ITEM_BY_NO"; /****************************����ɾ��table,database,file�����************************************/ PROCEDURE Alter_Plan_Del_Item(planname VARCHAR, objtype VARCHAR, objname VARCHAR) IS LANGUAGE "C" NAME "BLDIN_BAK_DROP_ITEM_BY_OBJNAME"; /****************************���üƻ���ǰ��Ŀ************************************/ PROCEDURE alter_modify_curr_item(planname VARCHAR, curr_item INTEGER) IS LANGUAGE "C" NAME "BLDIN_BAK_MODIFY_PLAN_CURR_ITEM"; /****************************�����´�����ʱ��************************************/ PROCEDURE alter_modify_run_time(planname VARCHAR, curr_item INTEGER, next_run_time DATETIME, istart_t DATETIME DEFAULT NULL) IS LANGUAGE "C" NAME "BLDIN_BAK_MODIFY_ITEM_RUN_TIME"; /*************�����ļ���ʱ���****************/ FUNCTION append_file_tail(srcpathname varchar) RETURN VARCHAR IS pos INTEGER; tail VARCHAR; str_year VARCHAR; str_month VARCHAR; str_day VARCHAR; str_hour VARCHAR; str_minute VARCHAR; str_second VARCHAR; str_ext VARCHAR; dstpathname VARCHAR; BEGIN if not FILE_EXISTS(srcpathname) then RETURN NULL; end if; tail := to_char(sysdate); str_year := substr(tail, 1, 4); str_month := substr(tail, 6, 2); str_day := substr(tail, 9, 2); str_hour := substr(tail, 12, 2); str_minute := substr(tail, 15, 2); str_second := substr(tail, 18, 2); tail := str_year || str_month || str_day || str_hour || str_minute || str_second; pos := POSITION('.' IN REVERSE_STR(srcpathname)); if pos > 0 then str_ext := tailing(srcpathname, pos - 1); dstpathname := heading(srcpathname, len(srcpathname) - pos); else dstpathname := srcpathname; end if; dstpathname := dstpathname || '_' || tail || '.' || str_ext; --send_msg(dstpathname); RETURN dstpathname; END; /**********************ȡ���ļ�ĩβ�Ĵ���ʱ��********************/ FUNCTION get_file_create_time(filename VARCHAR, compfilename VARCHAR) RETURN DATETIME IS dt DATETIME; dt_str VARCHAR; str_year VARCHAR; str_month VARCHAR; str_day VARCHAR; str_hour VARCHAR; str_minute VARCHAR; str_second VARCHAR; pos INTEGER; BEGIN --���ļ����У�ȡ��ʱ�䴮 dt_str := substr(filename, len(compfilename) + 2, 14); if len(dt_str) != 14 then dt_str := '99991231235959'; end if; str_year := substr(dt_str, 1, 4); str_month := substr(dt_str, 5, 2); str_day := substr(dt_str, 7, 2); str_hour := substr(dt_str, 9, 2); str_minute := substr(dt_str, 11, 2); str_second := substr(dt_str, 13, 2); dt_str := str_year || '-' || str_month || '-' || str_day || ' ' || str_hour || ':' || str_minute || ':' || str_second; dt := To_date(dt_str, 'yyyy-mm-dd hh24:mi:ss'); RETURN dt; END; /************ȡ��ָ��·���£�ƥ��ָ�����ֿ�ʼ�ַ��������һ���ļ�*********/ FUNCTION get_first_file(path VARCHAR,filename VARCHAR,bak_count out integer) RETURN VARCHAR IS str_name varchar; str_ext varchar; str_filename varchar; str_fileext varchar; pos integer; create_dt datetime; ret_filename varchar; dt_str varchar; BEGIN bak_count := 0; ret_filename := NULL; --���·������ if not dir_exists(path) then RAISE_APPLICATION_ERROR(-30012, 'Ŀ��·��' || path || '������.'); end if; --����ָ���ļ��������ֺͺ� pos := POSITION('.' IN REVERSE_STR(filename)); if pos > 0 then str_ext := tailing(filename, pos - 1); str_name := heading(filename, len(filename) - pos); end if; create_dt := To_date('9999-12-31 23:59:59', 'yyyy-mm-dd hh24:mi:ss'); FOR r IN (select * from TABLE(DBMS_INFO.FILE_LIST(path))) LOOP if not r.is_dir then pos := position('/' IN REVERSE_STR(r.db_path)); if pos > 0 then str_filename := tailing(r.db_path, pos - 1); else str_filename := r.db_path; end if; pos := POSITION('.' IN REVERSE_STR(str_filename)); if pos > 0 then str_fileext := tailing(str_filename, pos - 1); str_filename := heading(str_filename, len(str_filename) - pos); end if; pos := position(str_name in str_filename); if pos = 1 and '_' = substr(str_filename, len(str_name) + 1, 1) and str_ext = str_fileext then bak_count := bak_count + 1; if create_dt > get_file_create_time(str_filename, str_name) then create_dt := get_file_create_time(str_filename, str_name); ret_filename := r.db_path; end if; end if; end if; END FOR; RETURN ret_filename; END; /*****************************��������������********************************/ PROCEDURE rename_op(path VARCHAR, fname VARCHAR) IS pos INTEGER; srcfilename VARCHAR; dstfilename VARCHAR; BEGIN --������� IF path ISNULL THEN RAISE_APPLICATION_ERROR(-30020, '����path����Ϊ��'); END IF; IF fname ISNULL THEN RAISE_APPLICATION_ERROR(-30020, '����fname����Ϊ��'); END IF; --����·�� pos := position('/' in reverse_str(path)); IF pos = 1 THEN srcfilename := path; ELSE srcfilename := CONCAT(path, '/'); END IF; srcfilename := CONCAT(srcfilename, fname); dstfilename := append_file_tail(srcfilename); IF dstfilename is not null then if not RENAME_FILE(srcfilename, dstfilename) then RAISE_APPLICATION_ERROR(-30015,'�������ļ�' || srcfilename || 'ʧ��.'); end if; end if; END; PROCEDURE Del_xfn() as path_str varchar; xfn_str varchar; min_xfn integer; path_len integer; xfn integer; BEGIN select MIN_RESTORE_XFN into min_xfn from sys_ctl_vars; for r in (select db_path from TABLE(DBMS_INFO.FILE_LIST('/ARCH')) ORDER BY DB_PATH) loop path_str := r.db_path; --ȡ�ù鵵�� path_len := len(path_str); path_str := heading(path_str, path_len - 4); xfn_str := tailing(path_str, path_len - 4 - len('/HOME/ARCH/REDO')); xfn := atol(xfn_str); --����鵵��С����С��ȫ�ţ���ɾ���鵵�ļ� if xfn < min_xfn then DROP_FILE(r.db_path); end if; end for; END; PROCEDURE FILE_OPTION (PATH VARCHAR,OBJ_NAME VARCHAR,SAVE_BAK INT,OP_TYPE VARCHAR,PLAN_NAME VARCHAR,ITEM_NO INT,PATH_BAK VARCHAR) AS srcfilename VARCHAR; bak_count int; pos INTEGER; tmp_item_no INTEGER; s_t DATETIME; bakpathname VARCHAR; dstfilename VARCHAR; BEGIN --����ɾ���ļ����� IF UPPER(OP_TYPE) = 'DELETE' THEN --�������� rename_op(PATH, OBJ_NAME); --ɾ������ srcfilename := get_first_file(PATH, OBJ_NAME, bak_count); if srcfilename notnull and bak_count > SAVE_BAK then if not DROP_FILE(srcfilename) then RAISE_APPLICATION_ERROR(-30016,'ɾ���ļ�' || srcfilename || 'ʧ��.'); end if; end if; --�����ƶ��ļ����� ELSIF UPPER(OP_TYPE) = 'MOVE' THEN --�������� rename_op(PATH, OBJ_NAME); --�ƶ����� srcfilename := get_first_file(PATH, OBJ_NAME, bak_count); if srcfilename notnull and bak_count > SAVE_BAK then pos := POSITION('/' IN REVERSE_STR(srcfilename)); if pos > 0 then dstfilename := tailing(srcfilename, pos - 1); end if; if '/' = TAILING(PATH_BAK, 1) then dstfilename := CONCAT(PATH_BAK, dstfilename); else dstfilename := CONCAT('/', dstfilename); dstfilename := CONCAT(PATH_BAK, dstfilename); end if; if not RENAME_FILE(srcfilename, dstfilename) then RAISE_APPLICATION_ERROR(-30017,'�ƶ��ļ�' || srcfilename || 'ʧ��.'); end if; end if; END IF; END;--end file_op /************���ݼƻ���ִ����(��JOB����������)****************/ PROCEDURE Run() IS mark_str VARCHAR; sql_str VARCHAR; tv INTERVAL DAY TO MINUTE; nt DATETIME; tmp_item_no INTEGER; s_t DATETIME; bakpathname VARCHAR; option_type varchar; BEGIN --��ȡ��ƻ��е�ִ��ʱ������� FOR r IN (SELECT * FROM DBA_BACKUP_ITEMS R1 ,DBA_BACKUP_PLANS R2 WHERE r2.ENABLE=true AND NEXT_RUN_T < SYSDATE AND R1.PLAN_NAME=R2.PLAN_NAME ORDER BY R1.PLAN_NAME, ITEM_NO) LOOP IF r.op_type='BACKUP' THEN option_type:='BACKUP SYSTEM'; ELSIF r.op_type='BACKUP_INC' THEN option_type:='BACKUP SYSTEM INCREMENT'; ELSIF r.op_type='EXPORT' AND r.OBJ_TYPE = 'DATABASE' THEN option_type:='EXPORT DATABASE'; ELSIF r.op_type='EXPORT' AND r.OBJ_TYPE = 'TABLE' THEN option_type:='EXPORT TABLE'; END IF; ----ÿ�α���ǰ�����ļ������������������ļ���������д���,�������� IF R.OP_TYPE = 'BACKUP' or R.OP_TYPE='EXPORT' THEN FILE_OPTION(r.PATH,r.FILE_NAME,r.FILE_KEEP_CNT,r.file_op,r.plan_name,r.item_no,r.FILE_MOVE_PATH); nt := r.NEXT_RUN_T; while nt <= SYSDATE LOOP nt := nt + r.PERIOD; END LOOP; --���´�ִ��ʱ��(���۳ɹ�ʧ��,����ִ��ʱ��) dbms_backup.alter_modify_curr_item(r.PLAN_NAME, r.ITEM_NO); dbms_backup.alter_modify_run_time(r.PLAN_NAME, r.ITEM_NO, nt); ELSE nt := r.NEXT_RUN_T; s_t := r.ISTART_T; WHILE nt <= SYSDATE LOOP nt := nt + r.IPERIOD; IF nt > s_t + r.PERIOD THEN s_t := s_t + r.PERIOD; nt := s_t + r.TIME_OFF; END IF; END LOOP; dbms_backup.alter_modify_curr_item(r.PLAN_NAME, r.ITEM_NO); dbms_backup.alter_modify_run_time(r.PLAN_NAME, r.ITEM_NO, nt, s_t); END IF; bakpathname := r.PATH; IF '/' != TAILING(bakpathname, 1) THEN bakpathname := CONCAT(bakpathname, '/'); END IF; bakpathname := CONCAT(bakpathname, r.FILE_NAME); IF r.OP_TYPE = 'BACKUP' THEN sql_str := 'BACKUP SYSTEM TO ''' || bakpathname || ''' online;'; ELSIF r.OP_TYPE = 'BACKUP_INC' THEN sql_str := 'BACKUP SYSTEM INCREMENT APPEND TO ''' || bakpathname || ''' online;'; ELSIF r.OP_TYPE = 'EXPORT' AND r.OBJ_TYPE = 'DATABASE' THEN sql_str := 'BACKUP DATABASE TO ''' || bakpathname || ''';'; ELSIF r.OP_TYPE = 'EXPORT' AND r.OBJ_TYPE = 'TABLE' THEN sql_str := 'BACKUP TABLE ' || r.OBJ_NAME || ' APPEND TO ''' || bakpathname || ''';'; ELSE CONTINUE; END IF; BEGIN EXECUTE IMMEDIATE sql_str; END;--end execute END FOR; END; --end Run END DBMS_BACKUP; / CREATE OR REPLACE PACKAGE SYSDBA.DBMS_METADATA IS FUNCTION GET_DDL(obj_name IN VARCHAR) RETURN CLOB; FUNCTION GET_DDL(obj_type IN VARCHAR,obj_name IN VARCHAR,schema_name IN VARCHAR DEFAULT NULL) RETURN CLOB; FUNCTION GET_DDL_INDEX(tab_name IN VARCHAR, idx_name IN VARCHAR DEFAULT 'ALL') RETURN CLOB; END SYSDBA.DBMS_METADATA; / CREATE OR REPLACE PACKAGE BODY SYSDBA.DBMS_METADATA IS FUNCTION GET_DDL(obj_name IN VARCHAR) RETURN CLOB IS LANGUAGE "C" NAME "BLDIN_GET_DDL"; FUNCTION GET_DDL(obj_type IN VARCHAR,obj_name IN VARCHAR,schema_name IN VARCHAR DEFAULT NULL) RETURN CLOB IS LANGUAGE "C" NAME "BLDIN_GET_DDL_P3"; FUNCTION GET_DDL_INDEX(tab_name IN VARCHAR, idx_name IN VARCHAR DEFAULT 'ALL') RETURN CLOB IS LANGUAGE "C" NAME "BLDIN_GET_DDL_INDEX"; END SYSDBA.DBMS_METADATA; / ----------���ݿ�ͨ�ù��߰�(����)------------------ CREATE OR REPLACE PACKAGE SYSDBA.DBMS_UTILITY IS FUNCTION GET_TIME() RETURN BIGINT; FUNCTION FORMAT_ERROR_STACK() RETURN VARCHAR(5000); FUNCTION FORMAT_ERROR_BACKTRACE() RETURN VARCHAR(5000); PROCEDURE OPEN_TABLE(name IN VARCHAR, --���� ��'*' ��ǰ�������б���'schema_name.*' ָ��ģʽ�����б���'tab_name' ��ǰ�� ģʽ�µı��� node_id IN INTEGER) --�ڵ�id ��'0' ��ǰ�ڵ㣬 '-1' ���нڵ㣬 '����0' ָ���ڵ㣩 AUTHID USER; END SYSDBA.DBMS_UTILITY; / ----------���ݿ�ͨ�ù��߰�(ʵ��)------------------ CREATE OR REPLACE PACKAGE BODY SYSDBA.DBMS_UTILITY IS FUNCTION GET_TIME() RETURN BIGINT IS LANGUAGE "C" NAME "BLDIN_GET_TIME"; FUNCTION FORMAT_ERROR_STACK() RETURN VARCHAR(5000) IS BEGIN return SQLERRM; END; FUNCTION FORMAT_ERROR_BACKTRACE() RETURN VARCHAR(5000) IS LANGUAGE "C" NAME "BLDIN_FORMAT_ERROR_BACKTRACE"; PROCEDURE OPEN_TABLE(name IN VARCHAR, node_id IN INTEGER) IS LANGUAGE "C" NAME "BLDIN_OPEN_TABLE"; END SYSDBA.DBMS_UTILITY; / CREATE OR REPLACE PACKAGE DBMS_RANDOM AS -- Seed with a binary integer PROCEDURE SEED(val IN INTEGER); -- Seed with a string (up to length 2000) PROCEDURE SEED(val IN VARCHAR2); -- Get a random 18-digit precision number, 0.0 <= value < 1.0 FUNCTION VALUE RETURN NUMBER(38,18); -- get a random Oracle number x, low <= x < high FUNCTION VALUE (low IN NUMBER, high IN NUMBER) RETURN NUMBER(38,18); -- get a random number from a normal distribution FUNCTION normal RETURN NUMBER ; -- get a random string FUNCTION STRING (opt char, len NUMBER) /* "opt" specifies that the returned string may contain: 'u','U' : upper case alpha characters only 'l','L' : lower case alpha characters only 'a','A' : alpha characters only (mixed case) 'x','X' : any alpha-numeric characters (upper) 'p','P' : any printable characters */ RETURN VARCHAR2 ; -- string of <len> characters -- Obsolete, just calls seed(val) PROCEDURE INITIALIZE(val IN INTEGER); -- Obsolete, get integer in ( -power(2,31) <= random < power(2,31) ) FUNCTION RANDOM RETURN INTEGER; TYPE NUM_ARRAY IS TABLE OF NUMBER(38,38) INDEX BY INTEGER; END DBMS_RANDOM; / CREATE OR REPLACE PACKAGE BODY DBMS_RANDOM AS mem num_array; -- big internal state hidden from the user counter INTEGER := 55; -- counter through the results saved_norm NUMBER := NULL; -- unused random normally distributed value need_init BOOLEAN := TRUE; -- do we still need to initialize -- Seed the random number generator with a INTEGER PROCEDURE SEED(val IN INTEGER) IS BEGIN SEED(TO_CHAR(val)); END SEED; -- Seed the random number generator with a string. PROCEDURE SEED(val IN VARCHAR2) IS junk VARCHAR2(2000); piece VARCHAR2(20); randval NUMBER(38,37); mytemp NUMBER(38,0); vatemp NUMBER(38,14); j INTEGER; BEGIN need_init := FALSE; saved_norm := NULL; counter := 0; junk := val; FOR i IN 0..54 LOOP piece := SUBSTR(junk,1,19); randval := 0; j := 1; -- convert 19 characters to a 38-digit number FOR j IN 1..19 LOOP randval := 1e2*randval + NVL(ASCII(SUBSTR(piece,j,1)),0.0); END LOOP; -- try to avoid lots of zeros randval := randval*1e-38+i*.01020304050607080910111213141516171819; mem(i) := randval - TRUNC(randval); -- we've handled these first 19 characters already; move on junk := SUBSTR(junk,20); END LOOP; randval := mem(54); FOR j IN 0..10 LOOP FOR i IN 0..54 LOOP -- barrelshift mem(i-1) by 24 digits vatemp := randval * 1e24; mytemp := TRUNC(randval); randval := (randval - mytemp) + (mytemp * 1e-38); -- add it to mem(i) randval := mem(i)+randval; IF (randval >= 1.0) THEN randval := randval - 1.0; END IF; -- record the result mem(i) := randval; END LOOP; END LOOP; END seed; -- give values to the user -- Delayed Fibonacci, pilfered from Knuth volume 2 FUNCTION VALUE RETURN NUMBER(38,18) IS randval NUMBER(38,18); BEGIN counter := counter + 1; IF counter >= 55 THEN -- initialize if needed IF (need_init = TRUE) THEN SEED(TO_CHAR(SYSDATE,'MM-DD-YYYY HH24:MI:SS') || USER || USERENV('SESSIONID')); ELSE -- need to generate 55 more results FOR i IN 0..30 LOOP randval := mem(i+24) + mem(i); IF (randval >= 1.0) THEN randval := randval - 1.0; END IF; mem(i) := randval; END LOOP; FOR i IN 31..54 LOOP randval := mem(i-31) + mem(i); IF (randval >= 1.0) THEN randval := randval - 1.0; END IF; mem(i) := randval; END LOOP; END IF; counter := 0; END IF; RETURN mem(counter)*mem(counter)*mem(counter); END VALUE; -- Random 38-digit number between LOW and HIGH. FUNCTION VALUE ( low in NUMBER, high in NUMBER) RETURN NUMBER(38,18) is val numeric(38,18); BEGIN val := VALUE(); val := val*(high-low); RETURN val+low; END VALUE; -- Random numbers in a normal distribution. -- Pilfered from Knuth volume 2. FUNCTION NORMAL RETURN NUMBER is -- 38 decimal places: Mean 0, Variance 1 v1 NUMBER(38,18); v2 NUMBER(38,18); r2 NUMBER(38,18); fac NUMBER(38,18); BEGIN IF saved_norm is not NULL THEN -- saved from last time v1 := saved_norm; -- to be returned this time saved_norm := NULL; ELSE r2 := 2; -- Find two independent uniform variables WHILE r2 > 1 OR r2 = 0 LOOP v1 := value(); v1 := v1 + v1 - 1; v2 := value(); v2 := v2 + v2 - 1; r2 := v1*v1 + v2*v2; -- r2 is radius END LOOP; -- 0 < r2 <= 1: in unit circle /* Now derive two independent normally-distributed variables */ fac := sqrt(-2*ln(r2)/r2); v1 := v1*fac; -- to be returned this time saved_norm := v2*fac; -- to be saved for next time END IF; RETURN v1; END NORMAL; -- Random string. Pilfered from Chris Ellis. FUNCTION STRING (opt char, len NUMBER) RETURN VARCHAR2 is -- string of <len> characters optx char (1) := lower(opt); rng NUMBER; tmp NUMBER(38,18); n INTEGER; ccs VARCHAR2 (128); -- candidate character subset xstr VARCHAR2 (4000) := NULL; BEGIN IF optx = 'u' THEN -- upper case alpha characters only ccs := 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; rng := 26; ELSIF optx = 'l' THEN -- lower case alpha characters only ccs := 'abcdefghijklmnopqrstuvwxyz'; rng := 26; ELSIF optx = 'a' THEN -- alpha characters only (mixed case) ccs := 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' || 'abcdefghijklmnopqrstuvwxyz'; rng := 52; ELSIF optx = 'x' THEN -- any alpha-numeric characters (upper) ccs := '0123456789' || 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; rng := 36; ELSIF optx = 'p' THEN -- any printable char (ASCII subset) ccs := ' !"#$%&''()*+,-./' || '0123456789' || ':;<=>?@' || 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' || '[\]^_`' || 'abcdefghijklmnopqrstuvwxyz' || '{|}~' ; rng := 95; ELSE ccs := 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; rng := 26; -- default to upper case END IF; FOR i IN 1 .. least(len,4000) LOOP /* Get random integer within specified range */ tmp := rng * value; n := TRUNC(tmp) + 1; /* Append character to string */ xstr := xstr || SUBSTR(ccs,n,1); END LOOP; RETURN xstr; END STRING; -- For compatibility with 8.1 PROCEDURE INITIALIZE(val IN INTEGER) IS BEGIN SEED(to_char(val)); END INITIALIZE; -- For compatibility with 8.1 -- Random INTEGER, -power(2,31) <= Random < power(2,31) -- Delayed Fibonacci, pilfered from Knuth volume 2 FUNCTION RANDOM RETURN INTEGER IS BEGIN RETURN TRUNC(Value*4294967296)-2147483648; END RANDOM; END DBMS_RANDOM; / CREATE OR REPLACE PACKAGE SYSDBA.DBMS_JOB IS PROCEDURE SUBMIT(job OUT INTEGER,what IN VARCHAR,next_date IN DATETIME DEFAULT sysdate,pop_interval IN VARCHAR DEFAULT NULL,no_parse IN BOOLEAN DEFAULT FALSE,instance IN INTEGER DEFAULT 0,force IN BOOLEAN DEFAULT FALSE); PROCEDURE RUN(job INTEGER,force IN BOOLEAN DEFAULT FALSE); PROCEDURE REMOVE(job INTEGER); END SYSDBA.DBMS_JOB; / CREATE OR REPLACE PACKAGE BODY SYSDBA.DBMS_JOB IS PROCEDURE SUBMIT(job OUT INTEGER,what IN VARCHAR,next_date IN DATETIME DEFAULT sysdate,pop_interval IN VARCHAR DEFAULT NULL,no_parse IN BOOLEAN DEFAULT FALSE,instance IN INTEGER DEFAULT 0,force IN BOOLEAN DEFAULT FALSE) IS name varchar; BEGIN name := dbms_random.string('u',20); DBMS_SCHEDULER.CREATE_JOB(name,'stored_procedure',what,0,next_date,pop_interval,'2099-12-31 00:00:00','JOB_CLASS',force,FALSE,NULL); SELECT JOB_ID INTO job FROM ALL_JOBS WHERE JOB_NAME=name; END; PROCEDURE RUN(job INTEGER,force IN BOOLEAN DEFAULT FALSE) IS name varchar; BEGIN SELECT JOB_NAME INTO name FROM ALL_JOBS WHERE JOB_ID=job; DBMS_SCHEDULER.RUN_JOB(name,force); END; PROCEDURE REMOVE(job INTEGER) IS name varchar; BEGIN SELECT JOB_NAME INTO name FROM ALL_JOBS WHERE JOB_ID=job; DBMS_SCHEDULER.DROP_JOB(name,TRUE); END; END SYSDBA.DBMS_JOB; / ----------SYNONYM DEFINE------------- CREATE PUBLIC SYNONYM RECYCLEBIN FOR USER_RECYCLEBIN; / /** ʹ��ʱ���� CREATE OR REPLACE PACKAGE SYSDBA.DBMS_SESSION IS PROCEDURE SET_CONTEXT(context_name VARCHAR,attribute VARCHAR,value VARCHAR,username VARCHAR DEFAULT NULL,client_id VARCHAR DEFAULT NULL); END SYSDBA.DBMS_SESSION; ----���� CREATE OR REPLACE PACKAGE BODY SYSDBA.DBMS_SESSION IS PROCEDURE SET_CONTEXT(context_name VARCHAR,attribute VARCHAR,value VARCHAR,username VARCHAR DEFAULT NULL,client_id VARCHAR DEFAULT NULL) IS LANGUAGE "C" NAME "BLDIN_SET_CONTEXT"; END SYSDBA.DBMS_SESSION; CREATE OR REPLACE PACKAGE SYSDBA.DBMS_RLS IS CONTEXT_SENSITIVE integer :=1; PROCEDURE ADD_POLICY( object_schema IN VARCHAR, object_name IN VARCHAR, policy_name IN VARCHAR, function_schema IN VARCHAR, policy_function IN VARCHAR, statement_types IN VARCHAR, update_check IN BOOLEAN DEFAULT FALSE, enable IN BOOLEAN DEFAULT TRUE, static_policy IN BOOLEAN DEFAULT FALSE, policy_type IN BINARY_INTEGER DEFAULT NULL, long_predicate IN BOOLEAN DEFAULT FALSE, sec_relevant_cols IN VARCHAR2 DEFAULT NULL, sec_relevant_cols_opt IN BINARY_INTEGER DEFAULT NULL); PROCEDURE DROP_POLICY( object_schema IN VARCHAR, object_name IN VARCHAR, policy_name IN VARCHAR); END SYSDBA.DBMS_RLS; ----���� CREATE OR REPLACE PACKAGE BODY SYSDBA.DBMS_RLS IS PROCEDURE ADD_POLICY( object_schema IN VARCHAR, object_name IN VARCHAR, policy_name IN VARCHAR, function_schema IN VARCHAR, policy_function IN VARCHAR, statement_types IN VARCHAR, update_check IN BOOLEAN DEFAULT FALSE, enable IN BOOLEAN DEFAULT TRUE, static_policy IN BOOLEAN DEFAULT FALSE, policy_type IN BINARY_INTEGER DEFAULT NULL, long_predicate IN BOOLEAN DEFAULT FALSE, sec_relevant_cols IN VARCHAR2 DEFAULT NULL, sec_relevant_cols_opt IN BINARY_INTEGER DEFAULT NULL) IS LANGUAGE "C" NAME "BLDIN_ADD_POLICY"; PROCEDURE DROP_POLICY( object_schema IN VARCHAR, object_name IN VARCHAR, policy_name IN VARCHAR) IS LANGUAGE "C" NAME "BLDIN_DROP_POLICY"; END SYSDBA.DBMS_RLS; **/