xugu_init.sql 133 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835
  1. /*
  2. * VERSION: 12.4.0
  3. * LAST MODIFIED TIME: 2024-02-19
  4. */
  5. ----管理员工具包------------------
  6. CREATE OR REPLACE PACKAGE SYSDBA.DBMS_DBA
  7. IS
  8. PROCEDURE KILL_TRANS(NODEID INTEGER,TRANID BIGINT);
  9. PROCEDURE KILL_SESSION(NODEID INTEGER,SESSID INTEGER);
  10. PROCEDURE KILL_SESSION_TRANS(NODEID INTEGER,SESSID INTEGER);
  11. END SYSDBA.DBMS_DBA;
  12. /
  13. CREATE OR REPLACE PACKAGE BODY SYSDBA.DBMS_DBA
  14. IS
  15. PROCEDURE KILL_TRANS(NODEID INTEGER,TRANID BIGINT)
  16. IS
  17. LANGUAGE "C"
  18. NAME "BLDIN_KILL_TRANS";
  19. PROCEDURE KILL_SESSION(NODEID INTEGER,SESSID INTEGER)
  20. IS
  21. LANGUAGE "C"
  22. NAME "BLDIN_KILL_SESSION";
  23. PROCEDURE KILL_SESSION_TRANS(NODEID INTEGER,SESSID INTEGER)
  24. IS
  25. LANGUAGE "C"
  26. NAME "BLDIN_KILL_SESSION_TRANS";
  27. END SYSDBA.DBMS_DBA;
  28. /
  29. /***********创建DBMS_OUTPUT包*****************************/
  30. CREATE OR REPLACE PACKAGE SYSDBA.DBMS_OUTPUT
  31. IS
  32. PROCEDURE PUT_LINE(str VARCHAR);
  33. END SYSDBA.DBMS_OUTPUT;
  34. /
  35. ----包体
  36. CREATE OR REPLACE PACKAGE BODY SYSDBA.DBMS_OUTPUT
  37. IS
  38. PROCEDURE PUT_LINE(str VARCHAR)
  39. IS
  40. BEGIN
  41. send_msg(str);
  42. END;
  43. END SYSDBA.DBMS_OUTPUT;
  44. /
  45. /***********创建DBMS_INFO包(用于查询系统信息)***************/
  46. ----包头
  47. CREATE PACKAGE SYSDBA.DBMS_INFO
  48. IS
  49. SUBTYPE FileInfo IS RECORD(IS_DIR BOOLEAN,DB_PATH VARCHAR(256),OS_PATH VARCHAR(256));
  50. SUBTYPE FInfoTab IS TABLE OF FileInfo;
  51. FUNCTION FILE_LIST(_dir VARCHAR) RETURN FInfoTab;
  52. END SYSDBA.DBMS_INFO;
  53. /
  54. ----包体
  55. CREATE PACKAGE BODY SYSDBA.DBMS_INFO
  56. IS
  57. FUNCTION FILE_LIST(_dir VARCHAR) RETURN FInfoTab
  58. IS
  59. LANGUAGE "C"
  60. NAME "BLDIN_FILE_LIST";
  61. END SYSDBA.DBMS_INFO;
  62. /
  63. ----网络测试包------------------
  64. CREATE OR REPLACE PACKAGE SYSDBA.DBMS_TEST
  65. IS
  66. FUNCTION TEST_PING_PONG1(TARG_NID INTEGER,PACK_NUM INTEGER) RETURN INTEGER;
  67. FUNCTION TEST_PING_PONG2(TARG_NID INTEGER,PACK_SIZE INTEGER,PACK_NUM INTEGER) RETURN INTEGER;
  68. FUNCTION TEST_MSG_SEND1(TARG_NID INTEGER,PACK_SIZE INTEGER,PACK_NUM INTEGER) RETURN INTEGER;
  69. FUNCTION TEST_MSG_SEND2(TARG_NID INTEGER,PACK_SIZE INTEGER,PACK_NUM INTEGER) RETURN INTEGER;
  70. FUNCTION TEST_RPC_SEND(TARG_NID INTEGER,SEND_SIZE INTEGER) RETURN INTEGER;
  71. END SYSDBA.DBMS_TEST ;
  72. /
  73. CREATE OR REPLACE PACKAGE BODY SYSDBA.DBMS_TEST
  74. IS
  75. FUNCTION TEST_PING_PONG1(TARG_NID INTEGER,PACK_NUM INTEGER) RETURN INTEGER
  76. IS
  77. LANGUAGE "C"
  78. NAME "BLDIN_TEST_PING_PONG1";
  79. FUNCTION TEST_PING_PONG2(TARG_NID INTEGER,PACK_SIZE INTEGER,PACK_NUM INTEGER) RETURN INTEGER
  80. IS
  81. LANGUAGE "C"
  82. NAME "BLDIN_TEST_PING_PONG2";
  83. FUNCTION TEST_MSG_SEND1(TARG_NID INTEGER,PACK_SIZE INTEGER,PACK_NUM INTEGER) RETURN INTEGER
  84. IS
  85. LANGUAGE "C"
  86. NAME "BLDIN_TEST_MSG_SEND1";
  87. FUNCTION TEST_MSG_SEND2(TARG_NID INTEGER,PACK_SIZE INTEGER,PACK_NUM INTEGER) RETURN INTEGER
  88. IS
  89. LANGUAGE "C"
  90. NAME "BLDIN_TEST_MSG_SEND2";
  91. FUNCTION TEST_RPC_SEND(TARG_NID INTEGER,SEND_SIZE INTEGER) RETURN INTEGER
  92. IS
  93. LANGUAGE "C"
  94. NAME "BLDIN_TEST_RPC_SEND";
  95. END SYSDBA.DBMS_TEST ;
  96. /
  97. -----统计信息设置包-------------
  98. CREATE OR REPLACE PACKAGE SYSDBA.DBMS_STAT
  99. IS
  100. 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);
  101. PROCEDURE ANALYZE_TABLE(TABLE_NAME VARCHAR,FIELD_NAME VARCHAR,SAMPLE_RATE INTEGER,HSITOGRAM_NUM INTEGER);
  102. PROCEDURE SET_ANALYZE_SCHEME(TABLE_NAME VARCHAR,SCHE_NAME VARCHAR,ENABLE BOOL);
  103. PROCEDURE SET_ANALYZE_PARAM(TABLE_NAME VARCHAR,MODE TINYINT,THRESHOLD TINYINT,LEVEL TINYINT);
  104. PROCEDURE SET_ANALYZE_OPTIMIZE(TABLE_NAME VARCHAR,PERIOD SMALLINT,MODE TINYINT);
  105. PROCEDURE SET_ANALYZE_COLUMNS(TABLE_NAME VARCHAR,FIELD_NAME VARCHAR,STATUS TINYINT);
  106. FUNCTION GET_STAT_INFO(TABLE_NAME VARCHAR) RETURN VARCHAR;
  107. END SYSDBA.DBMS_STAT ;
  108. /
  109. CREATE OR REPLACE PACKAGE BODY SYSDBA.DBMS_STAT
  110. IS
  111. 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)
  112. IS
  113. LANGUAGE "C"
  114. NAME "BLDIN_SET_STAT_INFO";
  115. PROCEDURE ANALYZE_TABLE(TABLE_NAME VARCHAR,FIELD_NAME VARCHAR,SAMPLE_RATE INTEGER,HSITOGRAM_NUM INTEGER)
  116. IS
  117. LANGUAGE "C"
  118. NAME "BLDIN_ANALYZE_TABLE";
  119. PROCEDURE SET_ANALYZE_SCHEME(TABLE_NAME VARCHAR,SCHE_NAME VARCHAR,ENABLE BOOL)
  120. IS
  121. LANGUAGE "C"
  122. NAME "BLDIN_SET_ANALYZE_SCHEME";
  123. PROCEDURE SET_ANALYZE_PARAM(TABLE_NAME VARCHAR,MODE TINYINT,THRESHOLD TINYINT,LEVEL TINYINT)
  124. IS
  125. LANGUAGE "C"
  126. NAME "BLDIN_SET_ANALYZE_PARAM";
  127. PROCEDURE SET_ANALYZE_OPTIMIZE(TABLE_NAME VARCHAR,PERIOD SMALLINT,OPTI_MODE TINYINT)
  128. IS
  129. LANGUAGE "C"
  130. NAME "BLDIN_SET_ANALYZE_OPTIMIZE";
  131. PROCEDURE SET_ANALYZE_COLUMNS(TABLE_NAME VARCHAR,FIELD_NAME VARCHAR,STATUS TINYINT)
  132. IS
  133. LANGUAGE "C"
  134. NAME "BLDIN_SET_ANALYZE_COLUMNS";
  135. FUNCTION GET_STAT_INFO(TABLE_NAME VARCHAR) RETURN VARCHAR
  136. IS
  137. LANGUAGE "C"
  138. NAME "BLDIN_GET_STAT_INFO";
  139. END SYSDBA.DBMS_STAT ;
  140. /
  141. ----系统导入包,使用流方式快速导入数据,主要导入完成需要手动创建索引-------
  142. CREATE OR REPLACE PACKAGE SYSDBA.DBMS_IMPORT
  143. IS
  144. /* 列分隔符格式数据导入 */
  145. FUNCTION IMPORT_TABLE_FROM_TXT(TABLE_NAME VARCHAR, /* 表名 */
  146. MODE INTEGER, /* 追加模式 1:append 2:replace 异常值:append*/
  147. FLD_SEPARATOR VARCHAR, /* 列分隔符(仅支持单字符) */
  148. REINDEX BOOL) /* 已暂未使用 */
  149. RETURN BIGINT; /* 返回导入行数 */
  150. /* 长度指示格式数据导入 */
  151. FUNCTION IMPORT_TABLE_FROM_NET(TABLE_NAME VARCHAR, /* 表名 */
  152. MODE INTEGER, /* 追加模式 1:append 2:replace 异常值:append*/
  153. REINDEX BOOL) /* 已暂未使用 */
  154. RETURN BIGINT; /* 返回导入行数 */
  155. END SYSDBA.DBMS_TEST;
  156. /
  157. CREATE OR REPLACE PACKAGE BODY SYSDBA.DBMS_IMPORT
  158. IS
  159. FUNCTION IMPORT_TABLE_FROM_TXT(TABLE_NAME VARCHAR,MODE INTEGER,FLD_SEPARATOR VARCHAR,REINDEX BOOL) RETURN BIGINT
  160. IS
  161. LANGUAGE "C"
  162. NAME "BLDIN_IMPORT_TABLE_FROM_TXT";
  163. FUNCTION IMPORT_TABLE_FROM_NET(TABLE_NAME VARCHAR,MODE INTEGER,REINDEX BOOL) RETURN BIGINT
  164. IS
  165. LANGUAGE "C"
  166. NAME "BLDIN_IMPORT_TABLE_FROM_NET";
  167. END SYSDBA.DBMS_IMPORT ;
  168. /
  169. /***********创建DBMS_SCHEDULER包(用于查询系统信息)***************/
  170. ----包头
  171. CREATE OR REPLACE PACKAGE SYSDBA.DBMS_SCHEDULER
  172. AUTHID CURRENT_USER
  173. IS
  174. PROCEDURE CREATE_JOB (
  175. job_name IN VARCHAR2,
  176. job_type IN VARCHAR2,
  177. job_action IN VARCHAR2,
  178. number_of_arguments IN PLS_INTEGER DEFAULT 0,
  179. start_date IN TIMESTAMP DEFAULT NULL,
  180. repeat_interval IN VARCHAR2 DEFAULT NULL,
  181. end_date IN TIMESTAMP DEFAULT NULL,
  182. job_class IN VARCHAR2 DEFAULT 'DEFAULT_JOB_CLASS',
  183. enabled IN BOOLEAN DEFAULT FALSE,
  184. auto_drop IN BOOLEAN DEFAULT TRUE,
  185. comments IN VARCHAR2 DEFAULT NULL);
  186. PROCEDURE SET_ATTRIBUTE (
  187. name IN VARCHAR2,
  188. attribute IN VARCHAR2,
  189. value IN VARCHAR2);
  190. PROCEDURE SET_ATTRIBUTE (
  191. name IN VARCHAR2,
  192. attribute IN VARCHAR2,
  193. value IN TIMESTAMP);
  194. PROCEDURE SET_ATTRIBUTE (
  195. name IN VARCHAR2,
  196. attribute IN VARCHAR2,
  197. value IN PLS_INTEGER);
  198. PROCEDURE SET_ATTRIBUTE (
  199. name IN VARCHAR2,
  200. attribute IN VARCHAR2,
  201. value IN BOOLEAN);
  202. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  203. job_name IN VARCHAR2,
  204. argument_position IN PLS_INTEGER,
  205. argument_value IN VARCHAR2);
  206. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  207. job_name IN VARCHAR2,
  208. argument_name IN VARCHAR2,
  209. argument_value IN VARCHAR2);
  210. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  211. job_name IN VARCHAR2,
  212. argument_position IN PLS_INTEGER,
  213. argument_value IN TINYINT);
  214. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  215. job_name IN VARCHAR2,
  216. argument_name IN VARCHAR2,
  217. argument_value IN TINYINT);
  218. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  219. job_name IN VARCHAR2,
  220. argument_position IN PLS_INTEGER,
  221. argument_value IN SMALLINT);
  222. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  223. job_name IN VARCHAR2,
  224. argument_name IN VARCHAR2,
  225. argument_value IN SMALLINT);
  226. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  227. job_name IN VARCHAR2,
  228. argument_position IN PLS_INTEGER,
  229. argument_value IN INTEGER);
  230. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  231. job_name IN VARCHAR2,
  232. argument_name IN VARCHAR2,
  233. argument_value IN INTEGER);
  234. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  235. job_name IN VARCHAR2,
  236. argument_position IN PLS_INTEGER,
  237. argument_value IN BIGINT);
  238. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  239. job_name IN VARCHAR2,
  240. argument_name IN VARCHAR2,
  241. argument_value IN BIGINT);
  242. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  243. job_name IN VARCHAR2,
  244. argument_position IN PLS_INTEGER,
  245. argument_value IN FLOAT);
  246. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  247. job_name IN VARCHAR2,
  248. argument_name IN VARCHAR2,
  249. argument_value IN FLOAT);
  250. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  251. job_name IN VARCHAR2,
  252. argument_position IN PLS_INTEGER,
  253. argument_value IN DOUBLE);
  254. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  255. job_name IN VARCHAR2,
  256. argument_name IN VARCHAR2,
  257. argument_value IN DOUBLE);
  258. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  259. job_name IN VARCHAR2,
  260. argument_position IN PLS_INTEGER,
  261. argument_value IN NUMERIC);
  262. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  263. job_name IN VARCHAR2,
  264. argument_name IN VARCHAR2,
  265. argument_value IN NUMERIC);
  266. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  267. job_name IN VARCHAR2,
  268. argument_position IN PLS_INTEGER,
  269. argument_value IN BOOLEAN);
  270. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  271. job_name IN VARCHAR2,
  272. argument_name IN VARCHAR2,
  273. argument_value IN BOOLEAN);
  274. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  275. job_name IN VARCHAR2,
  276. argument_position IN PLS_INTEGER,
  277. argument_value IN TIME);
  278. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  279. job_name IN VARCHAR2,
  280. argument_name IN VARCHAR2,
  281. argument_value IN TIME);
  282. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  283. job_name IN VARCHAR2,
  284. argument_position IN PLS_INTEGER,
  285. argument_value IN DATE);
  286. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  287. job_name IN VARCHAR2,
  288. argument_name IN VARCHAR2,
  289. argument_value IN DATE);
  290. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  291. job_name IN VARCHAR2,
  292. argument_position IN PLS_INTEGER,
  293. argument_value IN DATETIME);
  294. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  295. job_name IN VARCHAR2,
  296. argument_name IN VARCHAR2,
  297. argument_value IN DATETIME);
  298. PROCEDURE RUN_JOB (
  299. job_name IN VARCHAR2,
  300. use_current_session IN BOOLEAN DEFAULT TRUE);
  301. PROCEDURE ENABLE (
  302. name IN VARCHAR2);
  303. PROCEDURE DISABLE (
  304. name IN VARCHAR2,
  305. force IN BOOLEAN DEFAULT FALSE);
  306. PROCEDURE DROP_JOB (
  307. job_name IN VARCHAR2,
  308. force IN BOOLEAN DEFAULT FALSE);
  309. FUNCTION JOB_NEXT_RUNTIME(
  310. job_name IN VARCHAR2,
  311. last_rt IN DATETIME) RETURN DATETIME;
  312. FUNCTION NEXT_RUNTIME(
  313. repeat_interval IN VARCHAR2,
  314. last_rt IN DATETIME) RETURN DATETIME;
  315. END SYSDBA.DBMS_SCHEDULER;
  316. /
  317. ----包体
  318. CREATE OR REPLACE PACKAGE BODY SYSDBA.DBMS_SCHEDULER
  319. IS
  320. PROCEDURE CREATE_JOB (
  321. job_name IN VARCHAR2,
  322. job_type IN VARCHAR2,
  323. job_action IN VARCHAR2,
  324. number_of_arguments IN PLS_INTEGER DEFAULT 0,
  325. start_date IN TIMESTAMP DEFAULT NULL,
  326. repeat_interval IN VARCHAR2 DEFAULT NULL,
  327. end_date IN TIMESTAMP DEFAULT NULL,
  328. job_class IN VARCHAR2 DEFAULT 'DEFAULT_JOB_CLASS',
  329. enabled IN BOOLEAN DEFAULT FALSE,
  330. auto_drop IN BOOLEAN DEFAULT TRUE,
  331. comments IN VARCHAR2 DEFAULT NULL)
  332. IS
  333. LANGUAGE "C"
  334. NAME "BLDIN_CREATE_JOB";
  335. PROCEDURE SET_ATTRIBUTE (
  336. name IN VARCHAR2,
  337. attribute IN VARCHAR2,
  338. value IN VARCHAR2)
  339. IS
  340. LANGUAGE "C"
  341. NAME "BLDIN_SET_SET_STR_ATTRIBUTE";
  342. PROCEDURE SET_ATTRIBUTE (
  343. name IN VARCHAR2,
  344. attribute IN VARCHAR2,
  345. value IN TIMESTAMP)
  346. IS
  347. LANGUAGE "C"
  348. NAME "BLDIN_SET_SET_DT_ATTRIBUTE";
  349. PROCEDURE SET_ATTRIBUTE (
  350. name IN VARCHAR2,
  351. attribute IN VARCHAR2,
  352. value IN PLS_INTEGER)
  353. IS
  354. LANGUAGE "C"
  355. NAME "BLDIN_SET_SET_I4_ATTRIBUTE";
  356. PROCEDURE SET_ATTRIBUTE (
  357. name IN VARCHAR2,
  358. attribute IN VARCHAR2,
  359. value IN BOOLEAN)
  360. IS
  361. LANGUAGE "C"
  362. NAME "BLDIN_SET_SET_BOOL_ATTRIBUTE";
  363. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  364. job_name IN VARCHAR2,
  365. argument_position IN PLS_INTEGER,
  366. argument_value IN VARCHAR2)
  367. IS
  368. LANGUAGE "C"
  369. NAME "BLDIN_SET_JOB_STR_ARG_BY_ORD";
  370. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  371. job_name IN VARCHAR2,
  372. argument_name IN VARCHAR2,
  373. argument_value IN VARCHAR2)
  374. IS
  375. LANGUAGE "C"
  376. NAME "BLDIN_SET_JOB_STR_ARG_BY_NAME";
  377. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  378. job_name IN VARCHAR2,
  379. argument_position IN PLS_INTEGER,
  380. argument_value IN INTEGER)
  381. IS
  382. LANGUAGE "C"
  383. NAME "BLDIN_SET_JOB_I4_ARG_BY_ORD";
  384. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  385. job_name IN VARCHAR2,
  386. argument_name IN VARCHAR2,
  387. argument_value IN INTEGER)
  388. IS
  389. LANGUAGE "C"
  390. NAME "BLDIN_SET_JOB_I4_ARG_BY_NAME";
  391. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  392. job_name IN VARCHAR2,
  393. argument_position IN PLS_INTEGER,
  394. argument_value IN TINYINT)
  395. IS
  396. LANGUAGE "C"
  397. NAME "BLDIN_SET_JOB_I1_ARG_BY_ORD";
  398. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  399. job_name IN VARCHAR2,
  400. argument_name IN VARCHAR2,
  401. argument_value IN TINYINT)
  402. IS
  403. LANGUAGE "C"
  404. NAME "BLDIN_SET_JOB_I1_ARG_BY_NAME";
  405. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  406. job_name IN VARCHAR2,
  407. argument_position IN PLS_INTEGER,
  408. argument_value IN SMALLINT)
  409. IS
  410. LANGUAGE "C"
  411. NAME "BLDIN_SET_JOB_I2_ARG_BY_ORD";
  412. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  413. job_name IN VARCHAR2,
  414. argument_name IN VARCHAR2,
  415. argument_value IN SMALLINT)
  416. IS
  417. LANGUAGE "C"
  418. NAME "BLDIN_SET_JOB_I2_ARG_BY_NAME";
  419. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  420. job_name IN VARCHAR2,
  421. argument_position IN PLS_INTEGER,
  422. argument_value IN BIGINT)
  423. IS
  424. LANGUAGE "C"
  425. NAME "BLDIN_SET_JOB_I8_ARG_BY_ORD";
  426. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  427. job_name IN VARCHAR2,
  428. argument_name IN VARCHAR2,
  429. argument_value IN BIGINT)
  430. IS
  431. LANGUAGE "C"
  432. NAME "BLDIN_SET_JOB_I8_ARG_BY_NAME";
  433. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  434. job_name IN VARCHAR2,
  435. argument_position IN PLS_INTEGER,
  436. argument_value IN FLOAT)
  437. IS
  438. LANGUAGE "C"
  439. NAME "BLDIN_SET_JOB_R4_ARG_BY_ORD";
  440. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  441. job_name IN VARCHAR2,
  442. argument_name IN VARCHAR2,
  443. argument_value IN FLOAT)
  444. IS
  445. LANGUAGE "C"
  446. NAME "BLDIN_SET_JOB_R4_ARG_BY_NAME";
  447. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  448. job_name IN VARCHAR2,
  449. argument_position IN PLS_INTEGER,
  450. argument_value IN DOUBLE)
  451. IS
  452. LANGUAGE "C"
  453. NAME "BLDIN_SET_JOB_R8_ARG_BY_ORD";
  454. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  455. job_name IN VARCHAR2,
  456. argument_name IN VARCHAR2,
  457. argument_value IN DOUBLE)
  458. IS
  459. LANGUAGE "C"
  460. NAME "BLDIN_SET_JOB_R8_ARG_BY_NAME";
  461. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  462. job_name IN VARCHAR2,
  463. argument_position IN PLS_INTEGER,
  464. argument_value IN NUMERIC)
  465. IS
  466. LANGUAGE "C"
  467. NAME "BLDIN_SET_JOB_NUM_ARG_BY_ORD";
  468. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  469. job_name IN VARCHAR2,
  470. argument_name IN VARCHAR2,
  471. argument_value IN NUMERIC)
  472. IS
  473. LANGUAGE "C"
  474. NAME "BLDIN_SET_JOB_NUM_ARG_BY_NAME";
  475. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  476. job_name IN VARCHAR2,
  477. argument_position IN PLS_INTEGER,
  478. argument_value IN BOOLEAN)
  479. IS
  480. LANGUAGE "C"
  481. NAME "BLDIN_SET_JOB_BOOL_ARG_BY_ORD";
  482. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  483. job_name IN VARCHAR2,
  484. argument_name IN VARCHAR2,
  485. argument_value IN BOOLEAN)
  486. IS
  487. LANGUAGE "C"
  488. NAME "BLDIN_SET_JOB_BOOL_ARG_BY_NAME";
  489. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  490. job_name IN VARCHAR2,
  491. argument_position IN PLS_INTEGER,
  492. argument_value IN TIME)
  493. IS
  494. LANGUAGE "C"
  495. NAME "BLDIN_SET_JOB_TIME_ARG_BY_ORD";
  496. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  497. job_name IN VARCHAR2,
  498. argument_name IN VARCHAR2,
  499. argument_value IN TIME)
  500. IS
  501. LANGUAGE "C"
  502. NAME "BLDIN_SET_JOB_TIME_ARG_BY_NAME";
  503. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  504. job_name IN VARCHAR2,
  505. argument_position IN PLS_INTEGER,
  506. argument_value IN DATE)
  507. IS
  508. LANGUAGE "C"
  509. NAME "BLDIN_SET_JOB_DATE_ARG_BY_ORD";
  510. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  511. job_name IN VARCHAR2,
  512. argument_name IN VARCHAR2,
  513. argument_value IN DATE)
  514. IS
  515. LANGUAGE "C"
  516. NAME "BLDIN_SET_JOB_DATE_ARG_BY_NAME";
  517. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  518. job_name IN VARCHAR2,
  519. argument_position IN PLS_INTEGER,
  520. argument_value IN DATETIME)
  521. IS
  522. LANGUAGE "C"
  523. NAME "BLDIN_SET_JOB_DT_ARG_BY_ORD";
  524. PROCEDURE SET_JOB_ARGUMENT_VALUE (
  525. job_name IN VARCHAR2,
  526. argument_name IN VARCHAR2,
  527. argument_value IN DATETIME)
  528. IS
  529. LANGUAGE "C"
  530. NAME "BLDIN_SET_JOB_DT_ARG_BY_NAME";
  531. PROCEDURE RUN_JOB (
  532. job_name IN VARCHAR2,
  533. use_current_session IN BOOLEAN DEFAULT TRUE)
  534. IS
  535. LANGUAGE "C"
  536. NAME "BLDIN_RUN_JOB";
  537. PROCEDURE ENABLE (
  538. name IN VARCHAR2)
  539. IS
  540. LANGUAGE "C"
  541. NAME "BLDIN_ENABLE_JOB";
  542. PROCEDURE DISABLE (
  543. name IN VARCHAR2,
  544. force IN BOOLEAN DEFAULT FALSE)
  545. IS
  546. LANGUAGE "C"
  547. NAME "BLDIN_DISABLE_JOB";
  548. PROCEDURE DROP_JOB (
  549. job_name IN VARCHAR2,
  550. force IN BOOLEAN DEFAULT FALSE)
  551. IS
  552. LANGUAGE "C"
  553. NAME "BLDIN_DROP_JOB";
  554. FUNCTION JOB_NEXT_RUNTIME(
  555. job_name IN VARCHAR2,
  556. last_rt IN DATETIME) RETURN DATETIME
  557. IS
  558. LANGUAGE "C"
  559. NAME "BLDIN_GET_JOB_NEXT_RUNTIME";
  560. FUNCTION NEXT_RUNTIME(
  561. repeat_interval IN VARCHAR2,
  562. last_rt IN DATETIME) RETURN DATETIME
  563. IS
  564. LANGUAGE "C"
  565. NAME "BLDIN_GET_NEXT_RUNTIME";
  566. END SYSDBA.DBMS_SCHEDULER;
  567. /
  568. /**************创建DBMS_SQL包********************/
  569. CREATE OR REPLACE PACKAGE SYSDBA.DBMS_SQL
  570. AUTHID CURRENT_USER
  571. IS
  572. --参数描述信息结构
  573. SUBTYPE TParaInfo IS RECORD(ParaName VARCHAR(128), --参数名
  574. ParaNo INTEGER, --编号
  575. ParaTid INTEGER, --类型ID
  576. ParaScale INTEGER, --精度标度
  577. BindState INTEGER); --绑定状态(0:未绑定 1:已绑定)
  578. SUBTYPE TParams IS TABLE OF TParaInfo;
  579. --结果字段描述信息结构
  580. SUBTYPE TResInfo IS RECORD(ResName VARCHAR(128), --输出字段名
  581. ResTid INTEGER, --输出字段类型
  582. ResScale INTEGER, --输出精度标度
  583. ResFlag INTEGER, --输出附加标志
  584. TargTid INTEGER, --接收变量的类型ID
  585. TargScale INTEGER); --接收变量的类型精度标度
  586. SUBTYPE TResults IS TABLE OF TResInfo;
  587. --游标对象结构
  588. SUBTYPE TCursor IS RECORD(StmtState INTEGER, --当前状态
  589. StmtType INTEGER, --parse返回的语句类型
  590. StmtSQL VARCHAR(2000), --SQL语句
  591. ObjPtr VARCHAR(20), --内部对象名(归系统使用)
  592. ParaInfos TParams, --参数描述表
  593. ResInfos TResults); --输出描述表
  594. SUBTYPE CursorVarr IS VARRAY(100) OF TCursor;
  595. --常量定义
  596. NATIVE INTEGER :=1;
  597. TYPE_BOOL INTEGER :=2;
  598. TYPE_I1 INTEGER :=3;
  599. TYPE_I2 INTEGER :=4;
  600. TYPE_I4 INTEGER :=5;
  601. TYPE_I8 INTEGER :=6;
  602. TYPE_NUMERIC INTEGER :=7;
  603. TYPE_R4 INTEGER :=8;
  604. TYPE_R8 INTEGER :=9;
  605. TYPE_DATE INTEGER :=10;
  606. TYPE_TIME INTEGER :=11;
  607. TYPE_TIMEZ INTEGER :=12;
  608. TYPE_DATETIME INTEGER :=13;
  609. TYPE_DATETIMEZ INTEGER :=14;
  610. TYPE_INTERVAL_Y INTEGER :=15;
  611. TYPE_INTERVAL_Y2M INTEGER :=16;
  612. TYPE_INTERVAL_M INTEGER :=17;
  613. TYPE_INTERVAL_D INTEGER :=18;
  614. TYPE_INTERVAL_D2H INTEGER :=19;
  615. TYPE_INTERVAL_H INTEGER :=20;
  616. TYPE_INTERVAL_D2M INTEGER :=21;
  617. TYPE_INTERVAL_H2M INTEGER :=22;
  618. TYPE_INTERVAL_MI INTEGER :=23;
  619. TYPE_INTERVAL_D2S INTEGER :=24;
  620. TYPE_INTERVAL_H2S INTEGER :=25;
  621. TYPE_INTERVAL_M2S INTEGER :=26;
  622. TYPE_INTERVAL_S INTEGER :=27;
  623. TYPE_ROWVER INTEGER :=28;
  624. TYPE_GUID INTEGER :=29;
  625. TYPE_STR INTEGER :=30;
  626. TYPE_CHAR INTEGER :=30;
  627. TYPE_VARCHAR INTEGER :=30;
  628. TYPE_CLOB INTEGER :=32;
  629. TYPE_BINARY INTEGER :=33;
  630. TYPE_BLOB INTEGER :=34;
  631. TYPE_ROWID INTEGER :=45;
  632. --SQL状态
  633. STMT_STATE_OPENED INTEGER := 1;
  634. STMT_STATE_PARSED INTEGER := 2;
  635. STMT_STATE_BINDED INTEGER := 3;
  636. STMT_STATE_DEFINED INTEGER := 4;
  637. STMT_STATE_EXCUTED INTEGER := 5;
  638. STMT_STATE_FETCHED INTEGER := 6;
  639. --游标对象数组
  640. Cursors CursorVarr;
  641. FUNCTION STROF_CURSOR(CurNo INTEGER) RETURN VARCHAR(5000);
  642. FUNCTION OPEN_CURSOR() RETURN INTEGER;
  643. FUNCTION IS_OPEN(c IN INTEGER) RETURN BOOLEAN;
  644. FUNCTION PARSE(CurNo INTEGER,StmtSQL VARCHAR,SqlType INTEGER) RETURN INTEGER;
  645. FUNCTION EXECUTE(CurNo INTEGER) RETURN INTEGER;
  646. FUNCTION FETCH_ROWS(CurNo INTEGER) RETURN INTEGER;
  647. FUNCTION CLOSE_CURSOR(CurNo INTEGER) RETURN INTEGER;
  648. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val BOOLEAN) RETURN INTEGER;
  649. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val TINYINT) RETURN INTEGER;
  650. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val SMALLINT) RETURN INTEGER;
  651. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTEGER) RETURN INTEGER;
  652. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val BIGINT) RETURN INTEGER;
  653. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val FLOAT) RETURN INTEGER;
  654. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val DOUBLE) RETURN INTEGER;
  655. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val NUMERIC) RETURN INTEGER;
  656. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val VARCHAR) RETURN INTEGER;
  657. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val CLOB) RETURN INTEGER;
  658. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val BLOB) RETURN INTEGER;
  659. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val TIME) RETURN INTEGER;
  660. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val TIME WITH TIME ZONE) RETURN INTEGER;
  661. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val DATE) RETURN INTEGER;
  662. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val DATETIME) RETURN INTEGER;
  663. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val DATETIME WITH TIME ZONE) RETURN INTEGER;
  664. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL YEAR) RETURN INTEGER;
  665. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL YEAR TO MONTH) RETURN INTEGER;
  666. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL MONTH) RETURN INTEGER;
  667. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL DAY) RETURN INTEGER;
  668. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL DAY TO HOUR) RETURN INTEGER;
  669. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL HOUR) RETURN INTEGER;
  670. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL DAY TO MINUTE) RETURN INTEGER;
  671. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL HOUR TO MINUTE) RETURN INTEGER;
  672. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL MINUTE) RETURN INTEGER;
  673. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL DAY TO SECOND) RETURN INTEGER;
  674. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL HOUR TO SECOND) RETURN INTEGER;
  675. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL MINUTE TO SECOND) RETURN INTEGER;
  676. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL SECOND) RETURN INTEGER;
  677. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val GUID) RETURN INTEGER;
  678. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val BINARY) RETURN INTEGER;
  679. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val ROWID) RETURN INTEGER;
  680. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT BOOLEAN) RETURN INTEGER;
  681. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT TINYINT) RETURN INTEGER;
  682. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT SMALLINT) RETURN INTEGER;
  683. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTEGER) RETURN INTEGER;
  684. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT BIGINT) RETURN INTEGER;
  685. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT FLOAT) RETURN INTEGER;
  686. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT DOUBLE) RETURN INTEGER;
  687. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT NUMERIC) RETURN INTEGER;
  688. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT VARCHAR) RETURN INTEGER;
  689. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT CLOB) RETURN INTEGER;
  690. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT BLOB) RETURN INTEGER;
  691. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT TIME) RETURN INTEGER;
  692. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT TIME WITH TIME ZONE) RETURN INTEGER;
  693. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT DATE) RETURN INTEGER;
  694. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT DATETIME) RETURN INTEGER;
  695. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT DATETIME WITH TIME ZONE) RETURN INTEGER;
  696. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL YEAR) RETURN INTEGER;
  697. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL YEAR TO MONTH) RETURN INTEGER;
  698. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL MONTH) RETURN INTEGER;
  699. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL DAY) RETURN INTEGER;
  700. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL DAY TO HOUR) RETURN INTEGER;
  701. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL HOUR) RETURN INTEGER;
  702. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL DAY TO MINUTE) RETURN INTEGER;
  703. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL HOUR TO MINUTE) RETURN INTEGER;
  704. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL MINUTE) RETURN INTEGER;
  705. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL DAY TO SECOND) RETURN INTEGER;
  706. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL HOUR TO SECOND) RETURN INTEGER;
  707. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL MINUTE TO SECOND) RETURN INTEGER;
  708. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL SECOND) RETURN INTEGER;
  709. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT GUID) RETURN INTEGER;
  710. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT BINARY) RETURN INTEGER;
  711. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT ROWID) RETURN INTEGER;
  712. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT BOOLEAN) RETURN INTEGER;
  713. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT TINYINT) RETURN INTEGER;
  714. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT SMALLINT) RETURN INTEGER;
  715. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTEGER) RETURN INTEGER;
  716. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT BIGINT) RETURN INTEGER;
  717. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT FLOAT) RETURN INTEGER;
  718. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT DOUBLE) RETURN INTEGER;
  719. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT NUMERIC) RETURN INTEGER;
  720. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT VARCHAR) RETURN INTEGER;
  721. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT CLOB) RETURN INTEGER;
  722. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT BLOB) RETURN INTEGER;
  723. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT TIME) RETURN INTEGER;
  724. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT TIME WITH TIME ZONE) RETURN INTEGER;
  725. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT DATE) RETURN INTEGER;
  726. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT DATETIME) RETURN INTEGER;
  727. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT DATETIME WITH TIME ZONE) RETURN INTEGER;
  728. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL YEAR) RETURN INTEGER;
  729. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL YEAR TO MONTH) RETURN INTEGER;
  730. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL MONTH) RETURN INTEGER;
  731. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL DAY) RETURN INTEGER;
  732. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL DAY TO HOUR) RETURN INTEGER;
  733. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL HOUR) RETURN INTEGER;
  734. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL DAY TO MINUTE) RETURN INTEGER;
  735. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL HOUR TO MINUTE) RETURN INTEGER;
  736. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL MINUTE) RETURN INTEGER;
  737. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL DAY TO SECOND) RETURN INTEGER;
  738. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL HOUR TO SECOND) RETURN INTEGER;
  739. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL MINUTE TO SECOND) RETURN INTEGER;
  740. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL SECOND) RETURN INTEGER;
  741. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT GUID) RETURN INTEGER;
  742. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT BINARY) RETURN INTEGER;
  743. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT ROWID) RETURN INTEGER;
  744. END SYSDBA.DBMS_SQL;
  745. /
  746. /**************创建DBMS_SQL包体********************/
  747. CREATE OR REPLACE PACKAGE BODY SYSDBA.DBMS_SQL
  748. IS
  749. FUNCTION BLDIN_PARSE(sql_str VARCHAR,sys_obj OUT VARCHAR,paras_info OUT TParams,targs_info OUT TResults) RETURN INTEGER
  750. IS LANGUAGE "C" NAME "BLDIN_PARSE";
  751. FUNCTION BLDIN_EXECUTE(ObjName VARCHAR) RETURN INTEGER
  752. IS LANGUAGE "C" NAME "BLDIN_EXECUTE";
  753. FUNCTION BLDIN_FETCH_ROWS (ObjName VARCHAR) RETURN INTEGER
  754. IS LANGUAGE "C" NAME "BLDIN_FETCH";
  755. FUNCTION BLDIN_CLOSE_CURSOR(Cur VARCHAR) RETURN INTEGER
  756. IS LANGUAGE "C" NAME "BLDIN_CLOSE_STMT";
  757. FUNCTION BLDIN_PARA_NAME_CMP(sor_name VARCHAR,targ_name VARCHAR) RETURN BOOLEAN
  758. IS LANGUAGE "C" NAME "BLDIN_PARA_NAME_CMP";
  759. FUNCTION BLDIN_BIND_BOOL(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val BOOLEAN) RETURN INTEGER
  760. IS LANGUAGE "C" NAME "BLDIN_BIND";
  761. FUNCTION BLDIN_NAME_BIND_BOOL(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val BOOLEAN) RETURN INTEGER
  762. IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME";
  763. FUNCTION BLDIN_BIND_I1(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val TINYINT) RETURN INTEGER
  764. IS LANGUAGE "C" NAME "BLDIN_BIND";
  765. FUNCTION BLDIN_NAME_BIND_I1(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val TINYINT) RETURN INTEGER
  766. IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME";
  767. FUNCTION BLDIN_BIND_I2(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val SMALLINT) RETURN INTEGER
  768. IS LANGUAGE "C" NAME "BLDIN_BIND";
  769. FUNCTION BLDIN_NAME_BIND_I2(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val SMALLINT) RETURN INTEGER
  770. IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME";
  771. FUNCTION BLDIN_BIND_I4(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val INTEGER) RETURN INTEGER
  772. IS LANGUAGE "C" NAME "BLDIN_BIND";
  773. FUNCTION BLDIN_NAME_BIND_I4(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val INTEGER) RETURN INTEGER
  774. IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME";
  775. FUNCTION BLDIN_BIND_I8(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val BIGINT) RETURN INTEGER
  776. IS LANGUAGE "C" NAME "BLDIN_BIND";
  777. FUNCTION BLDIN_NAME_BIND_I8(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val BIGINT) RETURN INTEGER
  778. IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME";
  779. FUNCTION BLDIN_BIND_R4(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val FLOAT) RETURN INTEGER
  780. IS LANGUAGE "C" NAME "BLDIN_BIND";
  781. FUNCTION BLDIN_NAME_BIND_R4(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val FLOAT) RETURN INTEGER
  782. IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME";
  783. FUNCTION BLDIN_BIND_R8(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val DOUBLE) RETURN INTEGER
  784. IS LANGUAGE "C" NAME "BLDIN_BIND";
  785. FUNCTION BLDIN_NAME_BIND_R8(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val DOUBLE) RETURN INTEGER
  786. IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME";
  787. FUNCTION BLDIN_BIND_Str(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val VARCHAR) RETURN INTEGER
  788. IS LANGUAGE "C" NAME "BLDIN_BIND";
  789. FUNCTION BLDIN_NAME_BIND_Str(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val VARCHAR) RETURN INTEGER
  790. IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME";
  791. FUNCTION BLDIN_BIND_CLOB(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val CLOB) RETURN INTEGER
  792. IS LANGUAGE "C" NAME "BLDIN_BIND";
  793. FUNCTION BLDIN_NAME_BIND_CLOB(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val CLOB) RETURN INTEGER
  794. IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME";
  795. FUNCTION BLDIN_BIND_BLOB(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val BLOB) RETURN INTEGER
  796. IS LANGUAGE "C" NAME "BLDIN_BIND";
  797. FUNCTION BLDIN_NAME_BIND_BLOB(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val BLOB) RETURN INTEGER
  798. IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME";
  799. FUNCTION BLDIN_BIND_T(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val TIME) RETURN INTEGER
  800. IS LANGUAGE "C" NAME "BLDIN_BIND";
  801. FUNCTION BLDIN_NAME_BIND_T(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val TIME) RETURN INTEGER
  802. IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME";
  803. FUNCTION BLDIN_BIND_TZ(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val TIME WITH TIME ZONE) RETURN INTEGER
  804. IS LANGUAGE "C" NAME "BLDIN_BIND";
  805. FUNCTION BLDIN_NAME_BIND_TZ(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val TIME WITH TIME ZONE) RETURN INTEGER
  806. IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME";
  807. FUNCTION BLDIN_BIND_D(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val DATE) RETURN INTEGER
  808. IS LANGUAGE "C" NAME "BLDIN_BIND";
  809. FUNCTION BLDIN_NAME_BIND_D(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val DATE) RETURN INTEGER
  810. IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME";
  811. FUNCTION BLDIN_BIND_DT(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val DATETIME) RETURN INTEGER
  812. IS LANGUAGE "C" NAME "BLDIN_BIND";
  813. FUNCTION BLDIN_NAME_BIND_DT(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val DATETIME) RETURN INTEGER
  814. IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME";
  815. FUNCTION BLDIN_BIND_DTZ(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val DATETIME WITH TIME ZONE) RETURN INTEGER
  816. IS LANGUAGE "C" NAME "BLDIN_BIND";
  817. FUNCTION BLDIN_NAME_BIND_DTZ(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val DATETIME WITH TIME ZONE) RETURN INTEGER
  818. IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME";
  819. FUNCTION BLDIN_BIND_IY(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val INTERVAL YEAR) RETURN INTEGER
  820. IS LANGUAGE "C" NAME "BLDIN_BIND";
  821. FUNCTION BLDIN_NAME_BIND_IY(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val INTERVAL YEAR) RETURN INTEGER
  822. IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME";
  823. FUNCTION BLDIN_BIND_IY2M(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val INTERVAL YEAR TO MONTH) RETURN INTEGER
  824. IS LANGUAGE "C" NAME "BLDIN_BIND";
  825. FUNCTION BLDIN_NAME_BIND_IY2M(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val INTERVAL YEAR TO MONTH) RETURN INTEGER
  826. IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME";
  827. FUNCTION BLDIN_BIND_IM(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val INTERVAL MONTH) RETURN INTEGER
  828. IS LANGUAGE "C" NAME "BLDIN_BIND";
  829. FUNCTION BLDIN_NAME_BIND_IM(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val INTERVAL MONTH) RETURN INTEGER
  830. IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME";
  831. FUNCTION BLDIN_BIND_ID(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val INTERVAL DAY) RETURN INTEGER
  832. IS LANGUAGE "C" NAME "BLDIN_BIND";
  833. FUNCTION BLDIN_NAME_BIND_ID(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val INTERVAL DAY) RETURN INTEGER
  834. IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME";
  835. FUNCTION BLDIN_BIND_ID2H(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val INTERVAL DAY TO HOUR) RETURN INTEGER
  836. IS LANGUAGE "C" NAME "BLDIN_BIND";
  837. FUNCTION BLDIN_NAME_BIND_ID2H(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val INTERVAL DAY TO HOUR) RETURN INTEGER
  838. IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME";
  839. FUNCTION BLDIN_BIND_IH(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val INTERVAL HOUR) RETURN INTEGER
  840. IS LANGUAGE "C" NAME "BLDIN_BIND";
  841. FUNCTION BLDIN_NAME_BIND_IH(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val INTERVAL HOUR) RETURN INTEGER
  842. IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME";
  843. FUNCTION BLDIN_BIND_ID2M(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val INTERVAL DAY TO MINUTE) RETURN INTEGER
  844. IS LANGUAGE "C" NAME "BLDIN_BIND";
  845. FUNCTION BLDIN_NAME_BIND_ID2M(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val INTERVAL DAY TO MINUTE) RETURN INTEGER
  846. IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME";
  847. FUNCTION BLDIN_BIND_IH2M(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val INTERVAL HOUR TO MINUTE) RETURN INTEGER
  848. IS LANGUAGE "C" NAME "BLDIN_BIND";
  849. FUNCTION BLDIN_NAME_BIND_IH2M(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val INTERVAL HOUR TO MINUTE) RETURN INTEGER
  850. IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME";
  851. FUNCTION BLDIN_BIND_IMI(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val INTERVAL MINUTE) RETURN INTEGER
  852. IS LANGUAGE "C" NAME "BLDIN_BIND";
  853. FUNCTION BLDIN_NAME_BIND_IMI(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val INTERVAL MINUTE) RETURN INTEGER
  854. IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME";
  855. FUNCTION BLDIN_BIND_ID2S(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val INTERVAL DAY TO SECOND) RETURN INTEGER
  856. IS LANGUAGE "C" NAME "BLDIN_BIND";
  857. FUNCTION BLDIN_NAME_BIND_ID2S(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val INTERVAL DAY TO SECOND) RETURN INTEGER
  858. IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME";
  859. FUNCTION BLDIN_BIND_IH2S(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val INTERVAL HOUR TO SECOND) RETURN INTEGER
  860. IS LANGUAGE "C" NAME "BLDIN_BIND";
  861. FUNCTION BLDIN_NAME_BIND_IH2S(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val INTERVAL HOUR TO SECOND) RETURN INTEGER
  862. IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME";
  863. FUNCTION BLDIN_BIND_IM2S(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val INTERVAL MINUTE TO SECOND) RETURN INTEGER
  864. IS LANGUAGE "C" NAME "BLDIN_BIND";
  865. FUNCTION BLDIN_NAME_BIND_IM2S(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val INTERVAL MINUTE TO SECOND) RETURN INTEGER
  866. IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME";
  867. FUNCTION BLDIN_BIND_IS(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val INTERVAL SECOND) RETURN INTEGER
  868. IS LANGUAGE "C" NAME "BLDIN_BIND";
  869. FUNCTION BLDIN_NAME_BIND_IS(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val INTERVAL SECOND) RETURN INTEGER
  870. IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME";
  871. FUNCTION BLDIN_BIND_N(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val NUMERIC) RETURN INTEGER
  872. IS LANGUAGE "C" NAME "BLDIN_BIND";
  873. FUNCTION BLDIN_NAME_BIND_N(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val NUMERIC) RETURN INTEGER
  874. IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME";
  875. FUNCTION BLDIN_BIND_GUID(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val GUID) RETURN INTEGER
  876. IS LANGUAGE "C" NAME "BLDIN_BIND";
  877. FUNCTION BLDIN_NAME_BIND_GUID(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val GUID) RETURN INTEGER
  878. IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME";
  879. FUNCTION BLDIN_BIND_BINARY(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val BINARY) RETURN INTEGER
  880. IS LANGUAGE "C" NAME "BLDIN_BIND";
  881. FUNCTION BLDIN_NAME_BIND_BINARY(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val BINARY) RETURN INTEGER
  882. IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME";
  883. FUNCTION BLDIN_BIND_ROWID(obj_name VARCHAR,para_no INTEGER,para_tid INTEGER,para_val ROWID) RETURN INTEGER
  884. IS LANGUAGE "C" NAME "BLDIN_BIND";
  885. FUNCTION BLDIN_NAME_BIND_ROWID(obj_name VARCHAR,para_name VARCHAR,para_tid INTEGER,para_val ROWID) RETURN INTEGER
  886. IS LANGUAGE "C" NAME "BLDIN_BIND_BY_NAME";
  887. FUNCTION BLDIN_DEFINE_COLUMN (ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN INTEGER
  888. IS LANGUAGE "C" NAME "BLDIN_DEFINE_COLUMN";
  889. FUNCTION BLDIN_COLUMN_VALUE_BOOL(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN BOOLEAN
  890. IS LANGUAGE "C" NAME "BLDIN_GET";
  891. FUNCTION BLDIN_COLUMN_VALUE_I1(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN TINYINT
  892. IS LANGUAGE "C" NAME "BLDIN_GET";
  893. FUNCTION BLDIN_COLUMN_VALUE_I2(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN SMALLINT
  894. IS LANGUAGE "C" NAME "BLDIN_GET";
  895. FUNCTION BLDIN_COLUMN_VALUE_I4(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN INTEGER
  896. IS LANGUAGE "C" NAME "BLDIN_GET";
  897. FUNCTION BLDIN_COLUMN_VALUE_I8(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN BIGINT
  898. IS LANGUAGE "C" NAME "BLDIN_GET";
  899. FUNCTION BLDIN_COLUMN_VALUE_R4(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN FLOAT
  900. IS LANGUAGE "C" NAME "BLDIN_GET";
  901. FUNCTION BLDIN_COLUMN_VALUE_R8(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN DOUBLE
  902. IS LANGUAGE "C" NAME "BLDIN_GET";
  903. FUNCTION BLDIN_COLUMN_VALUE_N(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN NUMERIC
  904. IS LANGUAGE "C" NAME "BLDIN_GET";
  905. FUNCTION BLDIN_COLUMN_VALUE_STR(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN VARCHAR
  906. IS LANGUAGE "C" NAME "BLDIN_GET";
  907. FUNCTION BLDIN_COLUMN_VALUE_CLOB(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN CLOB
  908. IS LANGUAGE "C" NAME "BLDIN_GET";
  909. FUNCTION BLDIN_COLUMN_VALUE_BLOB(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN BLOB
  910. IS LANGUAGE "C" NAME "BLDIN_GET";
  911. FUNCTION BLDIN_COLUMN_VALUE_T(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN TIME
  912. IS LANGUAGE "C" NAME "BLDIN_GET";
  913. FUNCTION BLDIN_COLUMN_VALUE_TZ(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN TIME WITH TIME ZONE
  914. IS LANGUAGE "C" NAME "BLDIN_GET";
  915. FUNCTION BLDIN_COLUMN_VALUE_D(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN DATE
  916. IS LANGUAGE "C" NAME "BLDIN_GET";
  917. FUNCTION BLDIN_COLUMN_VALUE_DT(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN DATETIME
  918. IS LANGUAGE "C" NAME "BLDIN_GET";
  919. FUNCTION BLDIN_COLUMN_VALUE_DTZ(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN DATETIME WITH TIME ZONE
  920. IS LANGUAGE "C" NAME "BLDIN_GET";
  921. FUNCTION BLDIN_COLUMN_VALUE_IY(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN INTERVAL YEAR
  922. IS LANGUAGE "C" NAME "BLDIN_GET";
  923. FUNCTION BLDIN_COLUMN_VALUE_IY2M(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN INTERVAL YEAR TO MONTH
  924. IS LANGUAGE "C" NAME "BLDIN_GET";
  925. FUNCTION BLDIN_COLUMN_VALUE_IM(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN INTERVAL MONTH
  926. IS LANGUAGE "C" NAME "BLDIN_GET";
  927. FUNCTION BLDIN_COLUMN_VALUE_ID(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN INTERVAL DAY
  928. IS LANGUAGE "C" NAME "BLDIN_GET";
  929. FUNCTION BLDIN_COLUMN_VALUE_ID2H(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN INTERVAL DAY TO HOUR
  930. IS LANGUAGE "C" NAME "BLDIN_GET";
  931. FUNCTION BLDIN_COLUMN_VALUE_IH(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN INTERVAL HOUR
  932. IS LANGUAGE "C" NAME "BLDIN_GET";
  933. FUNCTION BLDIN_COLUMN_VALUE_ID2M(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN INTERVAL DAY TO MINUTE
  934. IS LANGUAGE "C" NAME "BLDIN_GET";
  935. FUNCTION BLDIN_COLUMN_VALUE_IH2M(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN INTERVAL HOUR TO MINUTE
  936. IS LANGUAGE "C" NAME "BLDIN_GET";
  937. FUNCTION BLDIN_COLUMN_VALUE_IMI(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN INTERVAL MINUTE
  938. IS LANGUAGE "C" NAME "BLDIN_GET";
  939. FUNCTION BLDIN_COLUMN_VALUE_ID2S(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN INTERVAL DAY TO SECOND
  940. IS LANGUAGE "C" NAME "BLDIN_GET";
  941. FUNCTION BLDIN_COLUMN_VALUE_IH2S(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN INTERVAL HOUR TO SECOND
  942. IS LANGUAGE "C" NAME "BLDIN_GET";
  943. FUNCTION BLDIN_COLUMN_VALUE_IM2S(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN INTERVAL MINUTE TO SECOND
  944. IS LANGUAGE "C" NAME "BLDIN_GET";
  945. FUNCTION BLDIN_COLUMN_VALUE_IS(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN INTERVAL SECOND
  946. IS LANGUAGE "C" NAME "BLDIN_GET";
  947. FUNCTION BLDIN_COLUMN_VALUE_GUID(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN GUID
  948. IS LANGUAGE "C" NAME "BLDIN_GET";
  949. FUNCTION BLDIN_COLUMN_VALUE_BINARY(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN BINARY
  950. IS LANGUAGE "C" NAME "BLDIN_GET";
  951. FUNCTION BLDIN_COLUMN_VALUE_ROWID(ObjName VARCHAR,ColNo INTEGER,var_tid INTEGER,var_scale INTEGER) RETURN ROWID
  952. IS LANGUAGE "C" NAME "BLDIN_GET";
  953. /******************检查序号范围***********/
  954. FUNCTION CHECK_CURNO_RANGE(CurNo INTEGER) RETURN INTEGER
  955. IS
  956. BEGIN
  957. IF (CurNo ISNULL OR CurNo<1 OR CurNo>100) THEN
  958. RAISE_APPLICATION_ERROR(-1002,'游标序号错误');
  959. RETURN -1;
  960. END IF;
  961. END;
  962. /******************检查存在性***********/
  963. FUNCTION CHECK_CURNO_EXIST(CurNo INTEGER) RETURN INTEGER
  964. IS
  965. BEGIN
  966. IF cursors(CurNo).StmtState ISNULL THEN
  967. RAISE_APPLICATION_ERROR(-1003,'序号为'||CurNo||'的游标不存在');
  968. RETURN -1;
  969. ENDIF;
  970. END;
  971. /******************检查语句状态***********/
  972. FUNCTION CHECK_CURNO_STATE(CurNo INTEGER,STATE INTEGER) RETURN INTEGER
  973. IS
  974. BEGIN
  975. IF STATE = STMT_STATE_PARSED AND cursors(CurNo).StmtState < STMT_STATE_PARSED THEN
  976. RAISE_APPLICATION_ERROR(-1005,'序号为'||CurNo||'的游标未经过parse阶段');
  977. RETURN -1;
  978. ELSIF STATE = STMT_STATE_EXCUTED AND cursors(CurNo).StmtState < STMT_STATE_EXCUTED THEN
  979. RAISE_APPLICATION_ERROR(-1005,'序号为'||CurNo||'的游标未经过execute阶段');
  980. RETURN -1;
  981. ELSIF STATE = STMT_STATE_FETCHED AND cursors(CurNo).StmtState < STMT_STATE_FETCHED THEN
  982. RAISE_APPLICATION_ERROR(-1005,'序号为'||CurNo||'的游标未经过fetch阶段');
  983. RETURN -1;
  984. ENDIF;
  985. END;
  986. /******************检查序号**************/
  987. FUNCTION CHECK_CURNO(CurNo INTEGER,STATE INTEGER) RETURN INTEGER
  988. IS
  989. BEGIN
  990. --检查序号范围
  991. CHECK_CURNO_RANGE(CurNo);
  992. --检查存在性
  993. CHECK_CURNO_EXIST(CurNo);
  994. --检查语句状态
  995. CHECK_CURNO_STATE(CurNo,STATE);
  996. END;
  997. /******************检查序号范围和存在性**************/
  998. FUNCTION CHECK_CURNO_RANGE_AND_EXIST(CurNo INTEGER) RETURN INTEGER
  999. IS
  1000. BEGIN
  1001. --检查序号范围
  1002. CHECK_CURNO_RANGE(CurNo);
  1003. --检查存在性
  1004. CHECK_CURNO_EXIST(CurNo);
  1005. END;
  1006. /******************检查参数是否已绑定**************/
  1007. FUNCTION CHECK_PARA_BIND_STATE(Paras TParams) RETURN INTEGER
  1008. IS
  1009. para TParaInfo;
  1010. BEGIN
  1011. --遍历参数表检查所有参数是否都已绑定
  1012. IF(Paras NOTNULL AND Paras.count>0) THEN
  1013. FOR i IN 1 .. Paras.COUNT LOOP
  1014. para:=Paras(i);
  1015. if(para ISNULL OR para.BindState=0) THEN
  1016. RAISE_APPLICATION_ERROR(-1006, '参数'||para.ParaName||'未绑定');
  1017. ENDIF;
  1018. END FOR;
  1019. ENDIF;
  1020. END;
  1021. /******************设置绑定参数的绑定状态,更新绑定参数的类型**************/
  1022. FUNCTION SET_BIND_PARA_INFO(Paras IN OUT TParams,ParaName VARCHAR,ParaTid INTEGER) RETURN INTEGER
  1023. IS
  1024. para_no INTEGER;
  1025. BEGIN
  1026. --按名给参数表中对应的参数标记绑定位,并更新绑定的参数类型。
  1027. IF(Paras NOTNULL AND Paras.count>0) THEN
  1028. para_no:=0;
  1029. FOR i IN 1 .. Paras.COUNT LOOP
  1030. if(Paras(i) NOTNULL AND (BLDIN_PARA_NAME_CMP(Paras(i).ParaName,ParaName) OR BLDIN_PARA_NAME_CMP(Paras(i).ParaName,(':'||ParaName)))) THEN
  1031. Paras(i).BindState:=1;
  1032. Paras(i).ParaTid:=ParaTid;
  1033. para_no:=i;
  1034. EXIT;
  1035. ENDIF;
  1036. END FOR;
  1037. IF(para_no=0) THEN
  1038. RAISE_APPLICATION_ERROR(-1007,'绑定参数对象'||ParaName||'不存在');
  1039. ENDIF;
  1040. ENDIF;
  1041. END;
  1042. /******************生成编号为CurNo的Cursor的文本信息,用于支持调试***********/
  1043. FUNCTION STROF_CURSOR(CurNo INTEGER) RETURN VARCHAR(5000)
  1044. IS
  1045. cur TCursor;
  1046. str VARCHAR(5000);
  1047. para TParaInfo;
  1048. targ TResInfo;
  1049. BEGIN
  1050. --检查序号范围
  1051. CHECK_CURNO_RANGE(CurNo);
  1052. --检查存在性
  1053. CHECK_CURNO_EXIST(CurNo);
  1054. cur:=cursors(CurNo);
  1055. --输出状态,内部对象地址,SQL语句等
  1056. str:='Cursor{' || NEWLINE || ' state=' || cur.StmtState || ' ' || 'ObjPtr=' || cur.ObjPtr
  1057. || NEWLINE || ' SQL=' || cur.StmtSQL || NEWLINE;
  1058. --输出参数信息
  1059. IF(cur.ParaInfos NOTNULL AND cur.ParaInfos.count>0) THEN
  1060. str:=str || ' Paras[' || NEWLINE;
  1061. FOR i IN 1 .. cur.ParaInfos.COUNT LOOP
  1062. para:=cur.ParaInfos(i);
  1063. str:=str || ' (' || para.ParaName || ' ' || para.ParaNo || ' ' || para.ParaTid
  1064. || ' ' || para.ParaScale || ')' || NEWLINE;
  1065. END FOR;
  1066. str:=str || ' ]' || NEWLINE;
  1067. ENDIF;
  1068. --输出结果集字段信息
  1069. IF(cur.ResInfos NOTNULL AND cur.ResInfos.count>0) THEN
  1070. str:=str || ' Targets[' || NEWLINE;
  1071. FOR i IN 1 .. cur.ResInfos.COUNT LOOP
  1072. targ:=cur.ResInfos(i);
  1073. str:=str || ' (' || targ.ResName || ' ' || targ.ResTid || ' ' || targ.ResScale
  1074. || ' ' || targ.ResFlag || ')'||NEWLINE;
  1075. END FOR;
  1076. str:=str || ' ]' || NEWLINE;
  1077. ENDIF;
  1078. --返回结果
  1079. RETURN str;
  1080. END;
  1081. /*****************打开一个游标(分配一个游标对象,返回游标编号)**************/
  1082. FUNCTION OPEN_CURSOR() RETURN INTEGER
  1083. IS
  1084. i INTEGER;
  1085. BEGIN
  1086. /*从数组中找出空值项,并在此生成cursor对象*/
  1087. FOR i IN 1...100 LOOP
  1088. IF (Cursors(i).StmtState ISNULL) THEN
  1089. Cursors(i).StmtState := STMT_STATE_OPENED;
  1090. RETURN i;
  1091. END IF;
  1092. END FOR;
  1093. RAISE_APPLICATION_ERROR(-1001,'打开游标太多(最多100个)');
  1094. RETURN -1;
  1095. END;
  1096. /*****************关闭一个游标*****************************/
  1097. FUNCTION CLOSE_CURSOR(CurNo INTEGER) RETURN INTEGER
  1098. IS
  1099. BEGIN
  1100. --检查序号范围
  1101. CHECK_CURNO_RANGE(CurNo);
  1102. --检查存在性
  1103. CHECK_CURNO_EXIST(CurNo);
  1104. --调用内部函数关闭内核对象
  1105. IF (cursors(CurNo).ObjPtr NOTNULL) THEN
  1106. BLDIN_CLOSE_CURSOR(cursors(CurNo).ObjPtr);
  1107. ENDIF;
  1108. cursors(CurNo).StmtState := NULL;
  1109. cursors(CurNo).StmtSQL := NULL;
  1110. cursors(CurNo).ObjPtr := NULL;
  1111. cursors(CurNo).ParaInfos := NULL;
  1112. cursors(CurNo).ResInfos := NULL;
  1113. RETURN 1;
  1114. END;
  1115. /*****************检查一个游标是否处于开启状态***************************/
  1116. FUNCTION IS_OPEN(CurNo IN INTEGER) RETURN BOOLEAN
  1117. IS
  1118. BEGIN
  1119. --检查序号范围
  1120. CHECK_CURNO_RANGE(CurNo);
  1121. --检查存在性
  1122. IF (cursors(CurNo).StmtState IS NULL) THEN
  1123. RETURN FALSE;
  1124. ELSE
  1125. RETURN TRUE;
  1126. END IF;
  1127. END;
  1128. /********************为Cursor设置一个SQL语句,并分析此语句*****************/
  1129. FUNCTION PARSE(CurNo INTEGER,SqlStr VARCHAR,SqlType INTEGER) RETURN INTEGER
  1130. IS
  1131. cur TCursor;
  1132. BEGIN
  1133. --检查序号范围
  1134. CHECK_CURNO_RANGE(CurNo);
  1135. --检查存在性
  1136. CHECK_CURNO_EXIST(CurNo);
  1137. --设置SQL语句
  1138. cursors(CurNo).StmtSQL:=SqlStr;
  1139. --调用内核执行语句分析与规划
  1140. cursors(CurNo).StmtType := BLDIN_PARSE(SqlStr,cursors(CurNo).ObjPtr,cursors(CurNo).ParaInfos,cursors(CurNo).ResInfos);
  1141. --修改cursor状态
  1142. IF(cursors(CurNo).StmtType>0) THEN
  1143. cursors(CurNo).StmtState := STMT_STATE_PARSED; --表示已分析,但未绑定变量
  1144. ELSE
  1145. RAISE_APPLICATION_ERROR(-1004,'未知的SQL语句');
  1146. END IF;
  1147. --返回语句类型
  1148. RETURN cursors(CurNo).StmtType;
  1149. END;
  1150. /**************执行游标语句*************/
  1151. FUNCTION EXECUTE(CurNo INTEGER) RETURN INTEGER
  1152. IS
  1153. cur_name VARCHAR;
  1154. ret INTEGER;
  1155. BEGIN
  1156. --检查序号
  1157. CHECK_CURNO(CurNo,STMT_STATE_PARSED);
  1158. CHECK_PARA_BIND_STATE(cursors(CurNo).ParaInfos);
  1159. ret := BLDIN_EXECUTE(cursors(CurNo).ObjPtr);
  1160. cursors(CurNo).StmtState := STMT_STATE_EXCUTED;
  1161. RETURN ret;
  1162. END;
  1163. /****************向前抓取一行*************/
  1164. FUNCTION FETCH_ROWS(CurNo INTEGER) RETURN INTEGER
  1165. IS
  1166. ret INTEGER;
  1167. BEGIN
  1168. --检查序号
  1169. CHECK_CURNO(CurNo,STMT_STATE_EXCUTED);
  1170. ret := BLDIN_FETCH_ROWS(cursors(CurNo).ObjPtr);
  1171. cursors(CurNo).StmtState := STMT_STATE_FETCHED;
  1172. RETURN ret;
  1173. END;
  1174. /*********************绑定BOOLEAN型参数**********************/
  1175. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val BOOLEAN) RETURN INTEGER
  1176. IS
  1177. col_name VARCHAR:=UPPER(ColName);
  1178. BEGIN
  1179. --检查序号
  1180. CHECK_CURNO(CurNo,STMT_STATE_PARSED);
  1181. SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_BOOL);
  1182. RETURN BLDIN_NAME_BIND_BOOL(cursors(CurNo).ObjPtr,col_name,TYPE_BOOL,Val);
  1183. END;
  1184. /*********************绑定Tinyint型参数**********************/
  1185. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val TINYINT) RETURN INTEGER
  1186. IS
  1187. col_name VARCHAR:=UPPER(ColName);
  1188. BEGIN
  1189. --检查序号
  1190. CHECK_CURNO(CurNo,STMT_STATE_PARSED);
  1191. SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_I1);
  1192. RETURN BLDIN_NAME_BIND_I1(cursors(CurNo).ObjPtr,col_name,TYPE_I1,Val);
  1193. END;
  1194. /*********************绑定SmallInt型参数**********************/
  1195. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val SMALLINT) RETURN INTEGER
  1196. IS
  1197. col_name VARCHAR:=UPPER(ColName);
  1198. BEGIN
  1199. --检查序号
  1200. CHECK_CURNO(CurNo,STMT_STATE_PARSED);
  1201. SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_I2);
  1202. RETURN BLDIN_NAME_BIND_I2(cursors(CurNo).ObjPtr,col_name,TYPE_I2,Val);
  1203. END;
  1204. /*********************绑定Integer型参数**********************/
  1205. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTEGER) RETURN INTEGER
  1206. IS
  1207. col_name VARCHAR:=UPPER(ColName);
  1208. BEGIN
  1209. --检查序号
  1210. CHECK_CURNO(CurNo,STMT_STATE_PARSED);
  1211. SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_I4);
  1212. RETURN BLDIN_NAME_BIND_I4(cursors(CurNo).ObjPtr,col_name,TYPE_I4,Val);
  1213. END;
  1214. /*********************绑定BigInt型参数**********************/
  1215. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val BIGINT) RETURN INTEGER
  1216. IS
  1217. col_name VARCHAR:=UPPER(ColName);
  1218. BEGIN
  1219. --检查序号
  1220. CHECK_CURNO(CurNo,STMT_STATE_PARSED);
  1221. SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_I8);
  1222. RETURN BLDIN_NAME_BIND_I8(cursors(CurNo).ObjPtr,col_name,TYPE_I8,Val);
  1223. END;
  1224. /*********************绑定Float型参数**********************/
  1225. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val Float) RETURN INTEGER
  1226. IS
  1227. col_name VARCHAR:=UPPER(ColName);
  1228. BEGIN
  1229. --检查序号
  1230. CHECK_CURNO(CurNo,STMT_STATE_PARSED);
  1231. SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_R4);
  1232. RETURN BLDIN_NAME_BIND_R4(cursors(CurNo).ObjPtr,col_name,TYPE_R4,Val);
  1233. END;
  1234. /*********************绑定Double型参数**********************/
  1235. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val DOUBLE) RETURN INTEGER
  1236. IS
  1237. col_name VARCHAR:=UPPER(ColName);
  1238. BEGIN
  1239. --检查序号
  1240. CHECK_CURNO(CurNo,STMT_STATE_PARSED);
  1241. SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_R8);
  1242. RETURN BLDIN_NAME_BIND_R8(cursors(CurNo).ObjPtr,col_name,TYPE_R8,Val);
  1243. END;
  1244. /*********************绑定Numeric型参数**********************/
  1245. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val NUMERIC) RETURN INTEGER
  1246. IS
  1247. col_name VARCHAR:=UPPER(ColName);
  1248. BEGIN
  1249. --检查序号
  1250. CHECK_CURNO(CurNo,STMT_STATE_PARSED);
  1251. SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_NUMERIC);
  1252. RETURN BLDIN_NAME_BIND_N(cursors(CurNo).ObjPtr,col_name,TYPE_NUMERIC,Val);
  1253. END;
  1254. /*********************绑定CLOB型参数**********************/
  1255. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val CLOB) RETURN INTEGER
  1256. IS
  1257. col_name VARCHAR:=UPPER(ColName);
  1258. BEGIN
  1259. --检查序号
  1260. CHECK_CURNO(CurNo,STMT_STATE_PARSED);
  1261. SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_CLOB);
  1262. RETURN BLDIN_NAME_BIND_CLOB(cursors(CurNo).ObjPtr,col_name,TYPE_CLOB,Val);
  1263. END;
  1264. /*********************绑定BLOB型参数**********************/
  1265. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val BLOB) RETURN INTEGER
  1266. IS
  1267. col_name VARCHAR:=UPPER(ColName);
  1268. BEGIN
  1269. --检查序号
  1270. CHECK_CURNO(CurNo,STMT_STATE_PARSED);
  1271. SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_BLOB);
  1272. RETURN BLDIN_NAME_BIND_BLOB(cursors(CurNo).ObjPtr,col_name,TYPE_BLOB,Val);
  1273. END;
  1274. /*********************绑定VARCHAR型参数**********************/
  1275. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val VARCHAR) RETURN INTEGER
  1276. IS
  1277. col_name VARCHAR:=UPPER(ColName);
  1278. BEGIN
  1279. --检查序号
  1280. CHECK_CURNO(CurNo,STMT_STATE_PARSED);
  1281. SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_VARCHAR);
  1282. RETURN BLDIN_NAME_BIND_STR(cursors(CurNo).ObjPtr,col_name,TYPE_VARCHAR,Val);
  1283. END;
  1284. /*********************绑定Time型参数**********************/
  1285. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val TIME) RETURN INTEGER
  1286. IS
  1287. col_name VARCHAR:=UPPER(ColName);
  1288. BEGIN
  1289. --检查序号
  1290. CHECK_CURNO(CurNo,STMT_STATE_PARSED);
  1291. SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_TIME);
  1292. RETURN BLDIN_NAME_BIND_T(cursors(CurNo).ObjPtr,col_name,TYPE_TIME,Val);
  1293. END;
  1294. /*********************绑定 TIME WITH TIME ZONE 型参数**********************/
  1295. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val TIME WITH TIME ZONE) RETURN INTEGER
  1296. IS
  1297. col_name VARCHAR:=UPPER(ColName);
  1298. BEGIN
  1299. --检查序号
  1300. CHECK_CURNO(CurNo,STMT_STATE_PARSED);
  1301. SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_TIMEZ);
  1302. RETURN BLDIN_NAME_BIND_TZ(cursors(CurNo).ObjPtr,col_name,TYPE_TIMEZ,Val);
  1303. END;
  1304. /*********************绑定Date型参数**********************/
  1305. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val DATE) RETURN INTEGER
  1306. IS
  1307. col_name VARCHAR:=UPPER(ColName);
  1308. BEGIN
  1309. --检查序号
  1310. CHECK_CURNO(CurNo,STMT_STATE_PARSED);
  1311. SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_DATE);
  1312. RETURN BLDIN_NAME_BIND_D(cursors(CurNo).ObjPtr,col_name,TYPE_DATE,Val);
  1313. END;
  1314. /*********************绑定DateTime型参数**********************/
  1315. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val DATETIME) RETURN INTEGER
  1316. IS
  1317. col_name VARCHAR:=UPPER(ColName);
  1318. BEGIN
  1319. --检查序号
  1320. CHECK_CURNO(CurNo,STMT_STATE_PARSED);
  1321. SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_DATETIME);
  1322. RETURN BLDIN_NAME_BIND_DT(cursors(CurNo).ObjPtr,col_name,TYPE_DATETIME,Val);
  1323. END;
  1324. /*********************绑定DATETIME WITH TIME ZONE型参数**********************/
  1325. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val DATETIME WITH TIME ZONE) RETURN INTEGER
  1326. IS
  1327. col_name VARCHAR:=UPPER(ColName);
  1328. BEGIN
  1329. --检查序号
  1330. CHECK_CURNO(CurNo,STMT_STATE_PARSED);
  1331. SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_DATETIMEZ);
  1332. RETURN BLDIN_NAME_BIND_DTZ(cursors(CurNo).ObjPtr,col_name,TYPE_DATETIMEZ,Val);
  1333. END;
  1334. /*********************绑定 INTERVAL YEAR 型参数**********************/
  1335. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL YEAR) RETURN INTEGER
  1336. IS
  1337. col_name VARCHAR:=UPPER(ColName);
  1338. BEGIN
  1339. --检查序号
  1340. CHECK_CURNO(CurNo,STMT_STATE_PARSED);
  1341. SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_INTERVAL_Y);
  1342. RETURN BLDIN_NAME_BIND_IY(cursors(CurNo).ObjPtr,col_name,TYPE_INTERVAL_Y,Val);
  1343. END;
  1344. /*********************绑定 INTERVAL YEAR TO MONTH 型参数**********************/
  1345. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL YEAR TO MONTH) RETURN INTEGER
  1346. IS
  1347. col_name VARCHAR:=UPPER(ColName);
  1348. BEGIN
  1349. --检查序号
  1350. CHECK_CURNO(CurNo,STMT_STATE_PARSED);
  1351. SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_INTERVAL_Y2M);
  1352. RETURN BLDIN_NAME_BIND_IY2M(cursors(CurNo).ObjPtr,col_name,TYPE_INTERVAL_Y2M,Val);
  1353. END;
  1354. /*********************绑定 INTERVAL MONTH 型参数**********************/
  1355. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL MONTH) RETURN INTEGER
  1356. IS
  1357. col_name VARCHAR:=UPPER(ColName);
  1358. BEGIN
  1359. --检查序号
  1360. CHECK_CURNO(CurNo,STMT_STATE_PARSED);
  1361. SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_INTERVAL_M);
  1362. RETURN BLDIN_NAME_BIND_IM(cursors(CurNo).ObjPtr,col_name,TYPE_INTERVAL_M,Val);
  1363. END;
  1364. /*********************绑定 INTERVAL DAY 型参数**********************/
  1365. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL DAY) RETURN INTEGER
  1366. IS
  1367. col_name VARCHAR:=UPPER(ColName);
  1368. BEGIN
  1369. --检查序号
  1370. CHECK_CURNO(CurNo,STMT_STATE_PARSED);
  1371. SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_INTERVAL_D);
  1372. RETURN BLDIN_NAME_BIND_ID(cursors(CurNo).ObjPtr,col_name,TYPE_INTERVAL_D,Val);
  1373. END;
  1374. /*********************绑定 INTERVAL DAY TO HOUR 型参数**********************/
  1375. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL DAY TO HOUR) RETURN INTEGER
  1376. IS
  1377. col_name VARCHAR:=UPPER(ColName);
  1378. BEGIN
  1379. --检查序号
  1380. CHECK_CURNO(CurNo,STMT_STATE_PARSED);
  1381. SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_INTERVAL_D2H);
  1382. RETURN BLDIN_NAME_BIND_ID2H(cursors(CurNo).ObjPtr,col_name,TYPE_INTERVAL_D2H,Val);
  1383. END;
  1384. /*********************绑定 INTERVAL HOUR 型参数**********************/
  1385. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL HOUR) RETURN INTEGER
  1386. IS
  1387. col_name VARCHAR:=UPPER(ColName);
  1388. BEGIN
  1389. --检查序号
  1390. CHECK_CURNO(CurNo,STMT_STATE_PARSED);
  1391. SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_INTERVAL_H);
  1392. RETURN BLDIN_NAME_BIND_IH(cursors(CurNo).ObjPtr,col_name,TYPE_INTERVAL_H,Val);
  1393. END;
  1394. /*********************绑定 INTERVAL DAY TO MINUTE 型参数**********************/
  1395. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL DAY TO MINUTE) RETURN INTEGER
  1396. IS
  1397. col_name VARCHAR:=UPPER(ColName);
  1398. BEGIN
  1399. --检查序号
  1400. CHECK_CURNO(CurNo,STMT_STATE_PARSED);
  1401. SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_INTERVAL_D2M);
  1402. RETURN BLDIN_NAME_BIND_ID2M(cursors(CurNo).ObjPtr,col_name,TYPE_INTERVAL_D2M,Val);
  1403. END;
  1404. /*********************绑定 INTERVAL HOUR TO MINUTE 型参数**********************/
  1405. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL HOUR TO MINUTE) RETURN INTEGER
  1406. IS
  1407. col_name VARCHAR:=UPPER(ColName);
  1408. BEGIN
  1409. --检查序号
  1410. CHECK_CURNO(CurNo,STMT_STATE_PARSED);
  1411. SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_INTERVAL_H2M);
  1412. RETURN BLDIN_NAME_BIND_IH2M(cursors(CurNo).ObjPtr,col_name,TYPE_INTERVAL_H2M,Val);
  1413. END;
  1414. /*********************绑定 INTERVAL MINUTE 型参数**********************/
  1415. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL MINUTE) RETURN INTEGER
  1416. IS
  1417. col_name VARCHAR:=UPPER(ColName);
  1418. BEGIN
  1419. --检查序号
  1420. CHECK_CURNO(CurNo,STMT_STATE_PARSED);
  1421. SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_INTERVAL_MI);
  1422. RETURN BLDIN_NAME_BIND_IMI(cursors(CurNo).ObjPtr,col_name,TYPE_INTERVAL_MI,Val);
  1423. END;
  1424. /*********************绑定 INTERVAL DAY TO SECOND 型参数**********************/
  1425. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL DAY TO SECOND) RETURN INTEGER
  1426. IS
  1427. col_name VARCHAR:=UPPER(ColName);
  1428. BEGIN
  1429. --检查序号
  1430. CHECK_CURNO(CurNo,STMT_STATE_PARSED);
  1431. SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_INTERVAL_D2S);
  1432. RETURN BLDIN_NAME_BIND_ID2S(cursors(CurNo).ObjPtr,col_name,TYPE_INTERVAL_D2S,Val);
  1433. END;
  1434. /*********************绑定 INTERVAL HOUR TO SECOND 型参数**********************/
  1435. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL HOUR TO SECOND) RETURN INTEGER
  1436. IS
  1437. col_name VARCHAR:=UPPER(ColName);
  1438. BEGIN
  1439. --检查序号
  1440. CHECK_CURNO(CurNo,STMT_STATE_PARSED);
  1441. SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_INTERVAL_H2S);
  1442. RETURN BLDIN_NAME_BIND_IH2S(cursors(CurNo).ObjPtr,col_name,TYPE_INTERVAL_H2S,Val);
  1443. END;
  1444. /*********************绑定 INTERVAL MINUTE TO SECOND 型参数**********************/
  1445. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL MINUTE TO SECOND) RETURN INTEGER
  1446. IS
  1447. col_name VARCHAR:=UPPER(ColName);
  1448. BEGIN
  1449. --检查序号
  1450. CHECK_CURNO(CurNo,STMT_STATE_PARSED);
  1451. SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_INTERVAL_M2S);
  1452. RETURN BLDIN_NAME_BIND_IM2S(cursors(CurNo).ObjPtr,col_name,TYPE_INTERVAL_M2S,Val);
  1453. END;
  1454. /*********************绑定 INTERVAL SECOND 型参数**********************/
  1455. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val INTERVAL SECOND) RETURN INTEGER
  1456. IS
  1457. col_name VARCHAR:=UPPER(ColName);
  1458. BEGIN
  1459. --检查序号
  1460. CHECK_CURNO(CurNo,STMT_STATE_PARSED);
  1461. SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_INTERVAL_S);
  1462. RETURN BLDIN_NAME_BIND_IS(cursors(CurNo).ObjPtr,col_name,TYPE_INTERVAL_S,Val);
  1463. END;
  1464. /*********************绑定 GUID 型参数**********************/
  1465. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val GUID) RETURN INTEGER
  1466. IS
  1467. col_name VARCHAR:=UPPER(ColName);
  1468. BEGIN
  1469. --检查序号
  1470. CHECK_CURNO(CurNo,STMT_STATE_PARSED);
  1471. SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_GUID);
  1472. RETURN BLDIN_NAME_BIND_GUID(cursors(CurNo).ObjPtr,col_name,TYPE_GUID,Val);
  1473. END;
  1474. /*********************绑定 BINARY 型参数**********************/
  1475. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val BINARY) RETURN INTEGER
  1476. IS
  1477. col_name VARCHAR:=UPPER(ColName);
  1478. BEGIN
  1479. --检查序号
  1480. CHECK_CURNO(CurNo,STMT_STATE_PARSED);
  1481. SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_BINARY);
  1482. RETURN BLDIN_NAME_BIND_BINARY(cursors(CurNo).ObjPtr,col_name,TYPE_BINARY,Val);
  1483. END;
  1484. /*********************绑定 ROWID 型参数**********************/
  1485. FUNCTION BIND_VARIABLE(CurNo INTEGER,ColName VARCHAR,Val ROWID) RETURN INTEGER
  1486. IS
  1487. col_name VARCHAR:=UPPER(ColName);
  1488. BEGIN
  1489. --检查序号
  1490. CHECK_CURNO(CurNo,STMT_STATE_PARSED);
  1491. SET_BIND_PARA_INFO(cursors(CurNo).ParaInfos,col_name,TYPE_ROWID);
  1492. RETURN BLDIN_NAME_BIND_ROWID(cursors(CurNo).ObjPtr,col_name,TYPE_ROWID,Val);
  1493. END;
  1494. /***********定义输出类型Boolean***********/
  1495. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT BOOLEAN) RETURN INTEGER
  1496. IS
  1497. BEGIN
  1498. --检查序号
  1499. CHECK_CURNO_RANGE_AND_EXIST(CurNo);
  1500. RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_BOOL,-1);
  1501. END;
  1502. /***********定义输出类型TinyInt***********/
  1503. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT TINYINT) RETURN INTEGER
  1504. IS
  1505. BEGIN
  1506. --检查序号
  1507. CHECK_CURNO_RANGE_AND_EXIST(CurNo);
  1508. RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_I1,-1);
  1509. END;
  1510. /***********定义输出类型SmallInt***********/
  1511. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT SMALLINT) RETURN INTEGER
  1512. IS
  1513. BEGIN
  1514. --检查序号
  1515. CHECK_CURNO_RANGE_AND_EXIST(CurNo);
  1516. RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_I2,-1);
  1517. END;
  1518. /***********定义输出类型Integer***********/
  1519. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTEGER) RETURN INTEGER
  1520. IS
  1521. BEGIN
  1522. --检查序号
  1523. CHECK_CURNO_RANGE_AND_EXIST(CurNo);
  1524. RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_I4,-1);
  1525. END;
  1526. /***********定义输出类型Bigint***********/
  1527. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT BIGINT) RETURN INTEGER
  1528. IS
  1529. BEGIN
  1530. --检查序号
  1531. CHECK_CURNO_RANGE_AND_EXIST(CurNo);
  1532. RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_I8,-1);
  1533. END;
  1534. /***********定义输出类型Float***********/
  1535. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT FLOAT) RETURN INTEGER
  1536. IS
  1537. BEGIN
  1538. --检查序号
  1539. CHECK_CURNO_RANGE_AND_EXIST(CurNo);
  1540. RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_R4,-1);
  1541. END;
  1542. /***********定义输出类型Double***********/
  1543. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT DOUBLE) RETURN INTEGER
  1544. IS
  1545. BEGIN
  1546. --检查序号
  1547. CHECK_CURNO_RANGE_AND_EXIST(CurNo);
  1548. RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_R8,-1);
  1549. END;
  1550. /***********定义输出类型NUMERIC***********/
  1551. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT NUMERIC) RETURN INTEGER
  1552. IS
  1553. BEGIN
  1554. --检查序号
  1555. CHECK_CURNO_RANGE_AND_EXIST(CurNo);
  1556. RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_NUMERIC,-1);
  1557. END;
  1558. /***********定义输出类型Char***********/
  1559. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT CHAR) RETURN INTEGER
  1560. IS
  1561. BEGIN
  1562. --检查序号
  1563. CHECK_CURNO_RANGE_AND_EXIST(CurNo);
  1564. RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_STR,-1);
  1565. END;
  1566. /***********定义输出类型Varchar***********/
  1567. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT VARCHAR) RETURN INTEGER
  1568. IS
  1569. BEGIN
  1570. --检查序号
  1571. CHECK_CURNO_RANGE_AND_EXIST(CurNo);
  1572. RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_STR,-1);
  1573. END;
  1574. /***********定义输出类型CLOB***********/
  1575. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT CLOB) RETURN INTEGER
  1576. IS
  1577. BEGIN
  1578. --检查序号
  1579. CHECK_CURNO_RANGE_AND_EXIST(CurNo);
  1580. RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_CLOB,-1);
  1581. END;
  1582. /***********定义输出类型BLOB***********/
  1583. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT BLOB) RETURN INTEGER
  1584. IS
  1585. BEGIN
  1586. --检查序号
  1587. CHECK_CURNO_RANGE_AND_EXIST(CurNo);
  1588. RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_BLOB,-1);
  1589. END;
  1590. /***********定义输出类型TIME***********/
  1591. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT TIME) RETURN INTEGER
  1592. IS
  1593. BEGIN
  1594. --检查序号
  1595. CHECK_CURNO_RANGE_AND_EXIST(CurNo);
  1596. RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_TIME,-1);
  1597. END;
  1598. /***********定义输出类型TIME WITH TIME ZONE ***********/
  1599. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT TIME WITH TIME ZONE) RETURN INTEGER
  1600. IS
  1601. BEGIN
  1602. --检查序号
  1603. CHECK_CURNO_RANGE_AND_EXIST(CurNo);
  1604. RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_TIMEZ,-1);
  1605. END;
  1606. /***********定义输出类型Date***********/
  1607. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT DATE) RETURN INTEGER
  1608. IS
  1609. BEGIN
  1610. --检查序号
  1611. CHECK_CURNO_RANGE_AND_EXIST(CurNo);
  1612. RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_DATE,-1);
  1613. END;
  1614. /***********定义输出类型Datetime***********/
  1615. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT DATETIME) RETURN INTEGER
  1616. IS
  1617. BEGIN
  1618. --检查序号
  1619. CHECK_CURNO_RANGE_AND_EXIST(CurNo);
  1620. RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_DATETIME,-1);
  1621. END;
  1622. /***********定义输出类型DATETIME WITH TIME ZONE***********/
  1623. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT DATETIME WITH TIME ZONE) RETURN INTEGER
  1624. IS
  1625. BEGIN
  1626. --检查序号
  1627. CHECK_CURNO_RANGE_AND_EXIST(CurNo);
  1628. RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_DATETIMEZ,-1);
  1629. END;
  1630. /***********定义输出类型 INTERVAL YEAR ***********/
  1631. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL YEAR) RETURN INTEGER
  1632. IS
  1633. BEGIN
  1634. --检查序号
  1635. CHECK_CURNO_RANGE_AND_EXIST(CurNo);
  1636. RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_Y,-1);
  1637. END;
  1638. /***********定义输出类型 INTERVAL YEAR TO MONTH ***********/
  1639. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL YEAR TO MONTH) RETURN INTEGER
  1640. IS
  1641. BEGIN
  1642. --检查序号
  1643. CHECK_CURNO_RANGE_AND_EXIST(CurNo);
  1644. RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_Y2M,-1);
  1645. END;
  1646. /***********定义输出类型 INTERVAL MONTH ***********/
  1647. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL MONTH) RETURN INTEGER
  1648. IS
  1649. BEGIN
  1650. --检查序号
  1651. CHECK_CURNO_RANGE_AND_EXIST(CurNo);
  1652. RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_M,-1);
  1653. END;
  1654. /***********定义输出类型 INTERVAL DAY ***********/
  1655. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL DAY) RETURN INTEGER
  1656. IS
  1657. BEGIN
  1658. --检查序号
  1659. CHECK_CURNO_RANGE_AND_EXIST(CurNo);
  1660. RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_D,-1);
  1661. END;
  1662. /***********定义输出类型 INTERVAL DAY TO HOUR ***********/
  1663. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL DAY TO HOUR) RETURN INTEGER
  1664. IS
  1665. BEGIN
  1666. --检查序号
  1667. CHECK_CURNO_RANGE_AND_EXIST(CurNo);
  1668. RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_D2H,-1);
  1669. END;
  1670. /***********定义输出类型 INTERVAL HOUR ***********/
  1671. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL HOUR) RETURN INTEGER
  1672. IS
  1673. BEGIN
  1674. --检查序号
  1675. CHECK_CURNO_RANGE_AND_EXIST(CurNo);
  1676. RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_H,-1);
  1677. END;
  1678. /***********定义输出类型 INTERVAL DAY TO MINUTE ***********/
  1679. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL DAY TO MINUTE) RETURN INTEGER
  1680. IS
  1681. BEGIN
  1682. --检查序号
  1683. CHECK_CURNO_RANGE_AND_EXIST(CurNo);
  1684. RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_D2M,-1);
  1685. END;
  1686. /***********定义输出类型 INTERVAL HOUR TO MINUTE ***********/
  1687. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL HOUR TO MINUTE) RETURN INTEGER
  1688. IS
  1689. BEGIN
  1690. --检查序号
  1691. CHECK_CURNO_RANGE_AND_EXIST(CurNo);
  1692. RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_H2M,-1);
  1693. END;
  1694. /***********定义输出类型 INTERVAL MINUTE ***********/
  1695. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL MINUTE) RETURN INTEGER
  1696. IS
  1697. BEGIN
  1698. --检查序号
  1699. CHECK_CURNO_RANGE_AND_EXIST(CurNo);
  1700. RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_MI,-1);
  1701. END;
  1702. /***********定义输出类型 INTERVAL DAY TO SECOND ***********/
  1703. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL DAY TO SECOND) RETURN INTEGER
  1704. IS
  1705. BEGIN
  1706. --检查序号
  1707. CHECK_CURNO_RANGE_AND_EXIST(CurNo);
  1708. RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_D2S,-1);
  1709. END;
  1710. /***********定义输出类型 INTERVAL HOUR TO SECOND ***********/
  1711. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL HOUR TO SECOND) RETURN INTEGER
  1712. IS
  1713. BEGIN
  1714. --检查序号
  1715. CHECK_CURNO_RANGE_AND_EXIST(CurNo);
  1716. RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_H2S,-1);
  1717. END;
  1718. /***********定义输出类型 INTERVAL MINUTE TO SECOND ***********/
  1719. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL MINUTE TO SECOND) RETURN INTEGER
  1720. IS
  1721. BEGIN
  1722. --检查序号
  1723. CHECK_CURNO_RANGE_AND_EXIST(CurNo);
  1724. RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_M2S,-1);
  1725. END;
  1726. /***********定义输出类型 INTERVAL SECOND ***********/
  1727. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL SECOND) RETURN INTEGER
  1728. IS
  1729. BEGIN
  1730. --检查序号
  1731. CHECK_CURNO_RANGE_AND_EXIST(CurNo);
  1732. RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_S,-1);
  1733. END;
  1734. /***********定义输出类型 GUID ***********/
  1735. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT GUID) RETURN INTEGER
  1736. IS
  1737. BEGIN
  1738. --检查序号
  1739. CHECK_CURNO_RANGE_AND_EXIST(CurNo);
  1740. RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_GUID,-1);
  1741. END;
  1742. /***********定义输出类型 BINARY ***********/
  1743. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT BINARY) RETURN INTEGER
  1744. IS
  1745. BEGIN
  1746. --检查序号
  1747. CHECK_CURNO_RANGE_AND_EXIST(CurNo);
  1748. RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_BINARY,-1);
  1749. END;
  1750. /***********定义输出类型 ROWID ***********/
  1751. FUNCTION DEFINE_COLUMN(CurNo INTEGER,ColNo INTEGER,Var OUT ROWID) RETURN INTEGER
  1752. IS
  1753. BEGIN
  1754. --检查序号
  1755. CHECK_CURNO_RANGE_AND_EXIST(CurNo);
  1756. RETURN BLDIN_DEFINE_COLUMN(cursors(CurNo).ObjPtr,ColNo,TYPE_ROWID,-1);
  1757. END;
  1758. /***********取BOOLEAN字段值***************/
  1759. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT BOOLEAN) RETURN INTEGER
  1760. IS
  1761. BEGIN
  1762. --检查序号
  1763. CHECK_CURNO(CurNo,STMT_STATE_FETCHED);
  1764. Var:= BLDIN_COLUMN_VALUE_BOOL(cursors(CurNo).ObjPtr,ColNo,TYPE_BOOL,-1);
  1765. RETURN 1;
  1766. END;
  1767. /***********取TinyInt字段值***************/
  1768. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT TINYINT) RETURN INTEGER
  1769. IS
  1770. BEGIN
  1771. --检查序号
  1772. CHECK_CURNO(CurNo,STMT_STATE_FETCHED);
  1773. Var:= BLDIN_COLUMN_VALUE_I1(cursors(CurNo).ObjPtr,ColNo,TYPE_I1,-1);
  1774. RETURN 1;
  1775. END;
  1776. /***********取SmallInt字段值***************/
  1777. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT SMALLINT) RETURN INTEGER
  1778. IS
  1779. BEGIN
  1780. --检查序号
  1781. CHECK_CURNO(CurNo,STMT_STATE_FETCHED);
  1782. Var:= BLDIN_COLUMN_VALUE_I2(cursors(CurNo).ObjPtr,ColNo,TYPE_I2,-1);
  1783. RETURN 1;
  1784. END;
  1785. /***********取Integer字段值***************/
  1786. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTEGER) RETURN INTEGER
  1787. IS
  1788. BEGIN
  1789. --检查序号
  1790. CHECK_CURNO(CurNo,STMT_STATE_FETCHED);
  1791. Var:= BLDIN_COLUMN_VALUE_I4(cursors(CurNo).ObjPtr,ColNo,TYPE_I4,-1);
  1792. RETURN 1;
  1793. END;
  1794. /***********取BigInt字段值***************/
  1795. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT BIGINT) RETURN INTEGER
  1796. IS
  1797. BEGIN
  1798. --检查序号
  1799. CHECK_CURNO(CurNo,STMT_STATE_FETCHED);
  1800. Var:= BLDIN_COLUMN_VALUE_I8(cursors(CurNo).ObjPtr,ColNo,TYPE_I8,-1);
  1801. RETURN 1;
  1802. END;
  1803. /***********取Float字段值***************/
  1804. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT FLOAT) RETURN INTEGER
  1805. IS
  1806. BEGIN
  1807. --检查序号
  1808. CHECK_CURNO(CurNo,STMT_STATE_FETCHED);
  1809. Var:= BLDIN_COLUMN_VALUE_R4(cursors(CurNo).ObjPtr,ColNo,TYPE_R4,-1);
  1810. RETURN 1;
  1811. END;
  1812. /***********取DOUBLE字段值***************/
  1813. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT DOUBLE) RETURN INTEGER
  1814. IS
  1815. BEGIN
  1816. --检查序号
  1817. CHECK_CURNO(CurNo,STMT_STATE_FETCHED);
  1818. Var:= BLDIN_COLUMN_VALUE_R8(cursors(CurNo).ObjPtr,ColNo,TYPE_R8,-1);
  1819. RETURN 1;
  1820. END;
  1821. /***********取Numeric字段值***************/
  1822. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT NUMERIC) RETURN INTEGER
  1823. IS
  1824. BEGIN
  1825. --检查序号
  1826. CHECK_CURNO(CurNo,STMT_STATE_FETCHED);
  1827. Var:= BLDIN_COLUMN_VALUE_N(cursors(CurNo).ObjPtr,ColNo,TYPE_NUMERIC,-1);
  1828. RETURN 1;
  1829. END;
  1830. /***********取Char字段值***************/
  1831. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT CHAR) RETURN INTEGER
  1832. IS
  1833. BEGIN
  1834. --检查序号
  1835. CHECK_CURNO(CurNo,STMT_STATE_FETCHED);
  1836. Var:= BLDIN_COLUMN_VALUE_STR(cursors(CurNo).ObjPtr,ColNo,TYPE_STR,-1);
  1837. RETURN 1;
  1838. END;
  1839. /***********取Varchar字段值***************/
  1840. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT VARCHAR) RETURN INTEGER
  1841. IS
  1842. BEGIN
  1843. --检查序号
  1844. CHECK_CURNO(CurNo,STMT_STATE_FETCHED);
  1845. Var:= BLDIN_COLUMN_VALUE_STR(cursors(CurNo).ObjPtr,ColNo,TYPE_STR,-1);
  1846. RETURN 1;
  1847. END;
  1848. /***********取CLOB字段值***************/
  1849. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT CLOB) RETURN INTEGER
  1850. IS
  1851. BEGIN
  1852. --检查序号
  1853. CHECK_CURNO(CurNo,STMT_STATE_FETCHED);
  1854. Var:= BLDIN_COLUMN_VALUE_CLOB(cursors(CurNo).ObjPtr,ColNo,TYPE_CLOB,-1);
  1855. RETURN 1;
  1856. END;
  1857. /***********取BLOB字段值***************/
  1858. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT BLOB) RETURN INTEGER
  1859. IS
  1860. BEGIN
  1861. --检查序号
  1862. CHECK_CURNO(CurNo,STMT_STATE_FETCHED);
  1863. Var:= BLDIN_COLUMN_VALUE_BLOB(cursors(CurNo).ObjPtr,ColNo,TYPE_BLOB,-1);
  1864. RETURN 1;
  1865. END;
  1866. /***********取TIME字段值***************/
  1867. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT TIME) RETURN INTEGER
  1868. IS
  1869. BEGIN
  1870. --检查序号
  1871. CHECK_CURNO(CurNo,STMT_STATE_FETCHED);
  1872. Var:= BLDIN_COLUMN_VALUE_T(cursors(CurNo).ObjPtr,ColNo,TYPE_TIME,-1);
  1873. RETURN 1;
  1874. END;
  1875. /***********取TIME WITH TIME ZONE字段值***************/
  1876. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT TIME WITH TIME ZONE) RETURN INTEGER
  1877. IS
  1878. BEGIN
  1879. --检查序号
  1880. CHECK_CURNO(CurNo,STMT_STATE_FETCHED);
  1881. Var:= BLDIN_COLUMN_VALUE_TZ(cursors(CurNo).ObjPtr,ColNo,TYPE_TIMEZ,-1);
  1882. RETURN 1;
  1883. END;
  1884. /***********取DATE字段值***************/
  1885. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT DATE) RETURN INTEGER
  1886. IS
  1887. BEGIN
  1888. --检查序号
  1889. CHECK_CURNO(CurNo,STMT_STATE_FETCHED);
  1890. Var:= BLDIN_COLUMN_VALUE_D(cursors(CurNo).ObjPtr,ColNo,TYPE_DATE,-1);
  1891. RETURN 1;
  1892. END;
  1893. /***********取DateTime字段值***************/
  1894. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT DATETIME) RETURN INTEGER
  1895. IS
  1896. BEGIN
  1897. --检查序号
  1898. CHECK_CURNO(CurNo,STMT_STATE_FETCHED);
  1899. Var:= BLDIN_COLUMN_VALUE_DT(cursors(CurNo).ObjPtr,ColNo,TYPE_DATETIME,-1);
  1900. RETURN 1;
  1901. END;
  1902. /***********取DATETIME WITH TIME ZONE字段值***************/
  1903. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT DATETIME WITH TIME ZONE) RETURN INTEGER
  1904. IS
  1905. BEGIN
  1906. --检查序号
  1907. CHECK_CURNO(CurNo,STMT_STATE_FETCHED);
  1908. Var:= BLDIN_COLUMN_VALUE_DTZ(cursors(CurNo).ObjPtr,ColNo,TYPE_DATETIMEZ,-1);
  1909. RETURN 1;
  1910. END;
  1911. /***********取 INTERVAL YEAR 字段值***************/
  1912. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL YEAR) RETURN INTEGER
  1913. IS
  1914. BEGIN
  1915. --检查序号
  1916. CHECK_CURNO(CurNo,STMT_STATE_FETCHED);
  1917. Var:= BLDIN_COLUMN_VALUE_IY(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_Y,-1);
  1918. RETURN 1;
  1919. END;
  1920. /***********取 INTERVAL YEAR TO MONTH 字段值***************/
  1921. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL YEAR TO MONTH) RETURN INTEGER
  1922. IS
  1923. BEGIN
  1924. --检查序号
  1925. CHECK_CURNO(CurNo,STMT_STATE_FETCHED);
  1926. Var:= BLDIN_COLUMN_VALUE_IY2M(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_Y2M,-1);
  1927. RETURN 1;
  1928. END;
  1929. /***********取 INTERVAL MONTH字段值***************/
  1930. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL MONTH) RETURN INTEGER
  1931. IS
  1932. BEGIN
  1933. --检查序号
  1934. CHECK_CURNO(CurNo,STMT_STATE_FETCHED);
  1935. Var:= BLDIN_COLUMN_VALUE_IM(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_M,-1);
  1936. RETURN 1;
  1937. END;
  1938. /***********取 INTERVAL DAY 字段值***************/
  1939. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL DAY) RETURN INTEGER
  1940. IS
  1941. BEGIN
  1942. --检查序号
  1943. CHECK_CURNO(CurNo,STMT_STATE_FETCHED);
  1944. Var:= BLDIN_COLUMN_VALUE_ID(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_D,-1);
  1945. RETURN 1;
  1946. END;
  1947. /***********取 INTERVAL DAY TO HOUR 字段值***************/
  1948. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL DAY TO HOUR) RETURN INTEGER
  1949. IS
  1950. BEGIN
  1951. --检查序号
  1952. CHECK_CURNO(CurNo,STMT_STATE_FETCHED);
  1953. Var:= BLDIN_COLUMN_VALUE_ID2H(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_D2H,-1);
  1954. RETURN 1;
  1955. END;
  1956. /***********取 INTERVAL HOUR 字段值***************/
  1957. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL HOUR) RETURN INTEGER
  1958. IS
  1959. BEGIN
  1960. --检查序号
  1961. CHECK_CURNO(CurNo,STMT_STATE_FETCHED);
  1962. Var:= BLDIN_COLUMN_VALUE_IH(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_H,-1);
  1963. RETURN 1;
  1964. END;
  1965. /***********取 INTERVAL DAY TO MINUTE 字段值***************/
  1966. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL DAY TO MINUTE) RETURN INTEGER
  1967. IS
  1968. BEGIN
  1969. --检查序号
  1970. CHECK_CURNO(CurNo,STMT_STATE_FETCHED);
  1971. Var:= BLDIN_COLUMN_VALUE_ID2M(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_D2M,-1);
  1972. RETURN 1;
  1973. END;
  1974. /***********取 INTERVAL HOUR TO MINUTE 字段值***************/
  1975. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL HOUR TO MINUTE) RETURN INTEGER
  1976. IS
  1977. BEGIN
  1978. --检查序号
  1979. CHECK_CURNO(CurNo,STMT_STATE_FETCHED);
  1980. Var:= BLDIN_COLUMN_VALUE_IH2M(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_H2M,-1);
  1981. RETURN 1;
  1982. END;
  1983. /***********取 INTERVAL MINUTE 字段值***************/
  1984. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL MINUTE) RETURN INTEGER
  1985. IS
  1986. BEGIN
  1987. --检查序号
  1988. CHECK_CURNO(CurNo,STMT_STATE_FETCHED);
  1989. Var:= BLDIN_COLUMN_VALUE_IMI(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_MI,-1);
  1990. RETURN 1;
  1991. END;
  1992. /***********取 INTERVAL DAY TO SECOND 字段值***************/
  1993. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL DAY TO SECOND) RETURN INTEGER
  1994. IS
  1995. BEGIN
  1996. --检查序号
  1997. CHECK_CURNO(CurNo,STMT_STATE_FETCHED);
  1998. Var:= BLDIN_COLUMN_VALUE_ID2S(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_D2S,-1);
  1999. RETURN 1;
  2000. END;
  2001. /***********取 INTERVAL HOUR TO SECOND字段值***************/
  2002. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL HOUR TO SECOND) RETURN INTEGER
  2003. IS
  2004. BEGIN
  2005. --检查序号
  2006. CHECK_CURNO(CurNo,STMT_STATE_FETCHED);
  2007. Var:= BLDIN_COLUMN_VALUE_IH2S(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_H2S,-1);
  2008. RETURN 1;
  2009. END;
  2010. /***********取 INTERVAL MINUTE TO SECOND字段值***************/
  2011. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL MINUTE TO SECOND) RETURN INTEGER
  2012. IS
  2013. BEGIN
  2014. --检查序号
  2015. CHECK_CURNO_RANGE_AND_EXIST(CurNo);
  2016. Var:= BLDIN_COLUMN_VALUE_IM2S(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_M2S,-1);
  2017. RETURN 1;
  2018. END;
  2019. /***********取 INTERVAL SECOND字段值***************/
  2020. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT INTERVAL SECOND) RETURN INTEGER
  2021. IS
  2022. BEGIN
  2023. --检查序号
  2024. CHECK_CURNO_RANGE_AND_EXIST(CurNo);
  2025. Var:= BLDIN_COLUMN_VALUE_IS(cursors(CurNo).ObjPtr,ColNo,TYPE_INTERVAL_S,-1);
  2026. RETURN 1;
  2027. END;
  2028. /***********取 GUID字段值***************/
  2029. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT GUID) RETURN INTEGER
  2030. IS
  2031. BEGIN
  2032. --检查序号
  2033. CHECK_CURNO_RANGE_AND_EXIST(CurNo);
  2034. Var:= BLDIN_COLUMN_VALUE_GUID(cursors(CurNo).ObjPtr,ColNo,TYPE_GUID,-1);
  2035. RETURN 1;
  2036. END;
  2037. /***********取 BINARY 字段值***************/
  2038. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT BINARY) RETURN INTEGER
  2039. IS
  2040. BEGIN
  2041. --检查序号
  2042. CHECK_CURNO_RANGE_AND_EXIST(CurNo);
  2043. Var:= BLDIN_COLUMN_VALUE_BINARY(cursors(CurNo).ObjPtr,ColNo,TYPE_BINARY,-1);
  2044. RETURN 1;
  2045. END;
  2046. /***********取 ROWID 字段值***************/
  2047. FUNCTION COLUMN_VALUE(CurNo INTEGER,ColNo INTEGER,Var OUT ROWID) RETURN INTEGER
  2048. IS
  2049. BEGIN
  2050. --检查序号
  2051. CHECK_CURNO_RANGE_AND_EXIST(CurNo);
  2052. Var:= BLDIN_COLUMN_VALUE_ROWID(cursors(CurNo).ObjPtr,ColNo,TYPE_ROWID,-1);
  2053. RETURN 1;
  2054. END;
  2055. BEGIN
  2056. Cursors.extend(100);
  2057. END SYSDBA.DBMS_SQL;
  2058. /
  2059. /*************创建CTX_DOC包******************************/
  2060. CREATE OR REPLACE PACKAGE "SYSDBA"."CTX_DOC"
  2061. AUTHID CURRENT_USER
  2062. COMMENT '全文检索支持包'
  2063. IS
  2064. SUBTYPE TOKEN_REC IS RECORD(TOKEN VARCHAR(64),OFFSET INTEGER,LENGTH INTEGER);
  2065. SUBTYPE TOKEN_REC2 IS RECORD(TOKEN VARCHAR(64),REPET_N INTEGER,LENGTH INTEGER);
  2066. SUBTYPE TOKEN_TAB IS TABLE OF TOKEN_REC;
  2067. SUBTYPE TOKEN_TAB2 IS TABLE OF TOKEN_REC2;
  2068. SP_MAX_LEN CONSTANT INTEGER := 0; --按最长词划分
  2069. SP_MIN_LEN CONSTANT INTEGER := 1; --按最短词划分
  2070. SP_SUB_WORD1 CONSTANT INTEGER := 2; --结果包括大词的所有子词
  2071. SP_SUB_WORD2 CONSTANT INTEGER := 4; --结果包括大词有非头部子词
  2072. SP_ASCII CONSTANT INTEGER := 8; --结果包括ascii串
  2073. SP_DIGIT CONSTANT INTEGER := 16; --结果包括数字串
  2074. SPILIT_POLICY INTEGER:= 0; --MAX_LEN
  2075. VOCA_NAME VARCHAR(20):='STD_VOC';
  2076. KEY_TYPE VARCHAR(10):='PRIMARY';
  2077. PROCEDURE SET_KEY_TYPE(key_type IN VARCHAR2); --设置键类型
  2078. PROCEDURE SET_SPLIT_POLICY(_policy IN INTEGER);--设置分词策略
  2079. PROCEDURE TOKENS(index_name IN VARCHAR2,
  2080. textkey IN VARCHAR2,
  2081. restab IN OUT TOKEN_TAB);
  2082. PROCEDURE TOKENS(index_name IN VARCHAR2,
  2083. textkey IN VARCHAR2,
  2084. restab IN VARCHAR2,
  2085. query_id IN NUMBER DEFAULT 0);
  2086. PROCEDURE TOKENS(content IN VARCHAR2,
  2087. restab IN OUT TOKEN_TAB);
  2088. PROCEDURE TOKENS(content IN CLOB,
  2089. restab IN OUT TOKEN_TAB);
  2090. PROCEDURE TOKENS2(index_name IN VARCHAR2,
  2091. textkey IN VARCHAR2,
  2092. restab IN OUT TOKEN_TAB);
  2093. PROCEDURE TOKENS2(index_name IN VARCHAR2,
  2094. textkey IN VARCHAR2,
  2095. restab IN VARCHAR2,
  2096. query_id IN NUMBER DEFAULT 0);
  2097. PROCEDURE TOKENS2(content IN VARCHAR2,
  2098. restab IN OUT TOKEN_TAB);
  2099. PROCEDURE TOKENS2(content IN CLOB,
  2100. restab IN OUT TOKEN_TAB);
  2101. END "SYSDBA"."CTX_DOC";
  2102. /
  2103. /*************创建CTX_DOC包体******************************/
  2104. CREATE OR REPLACE PACKAGE BODY "SYSDBA"."CTX_DOC"
  2105. IS
  2106. PROCEDURE SET_KEY_TYPE(_key_type IN VARCHAR2)
  2107. IS
  2108. BEGIN
  2109. key_type:=_key_type;
  2110. END;
  2111. PROCEDURE SET_SPLIT_POLICY(_policy IN INTEGER)
  2112. IS
  2113. BEGIN
  2114. SPILIT_POLICY:=_policy;
  2115. END;
  2116. PROCEDURE BLDIN_TOKENS(
  2117. voca_name IN VARCHAR2,
  2118. content IN VARCHAR,
  2119. restab IN OUT TOKEN_TAB,
  2120. sp_policy IN INTEGER)
  2121. IS LANGUAGE "C" NAME "BLDIN_TOKENS1";
  2122. PROCEDURE BLDIN_TOKENS2(
  2123. voca_name IN VARCHAR2,
  2124. content IN VARCHAR,
  2125. restab IN OUT TOKEN_TAB,
  2126. sp_policy IN INTEGER)
  2127. IS LANGUAGE "C" NAME "BLDIN_TOKENS2";
  2128. PROCEDURE TOKENS(index_name IN VARCHAR2,
  2129. textkey IN VARCHAR2,
  2130. restab IN OUT TOKEN_TAB)
  2131. IS
  2132. BEGIN
  2133. NULL;
  2134. END;
  2135. PROCEDURE TOKENS(index_name IN VARCHAR2,
  2136. textkey IN VARCHAR2,
  2137. restab IN VARCHAR2,
  2138. query_id IN NUMBER DEFAULT 0)
  2139. IS
  2140. BEGIN
  2141. NULL;
  2142. END;
  2143. PROCEDURE TOKENS(content IN VARCHAR2,
  2144. restab IN OUT TOKEN_TAB)
  2145. IS
  2146. BEGIN
  2147. BLDIN_TOKENS(voca_name,content,restab,SPILIT_POLICY);
  2148. END;
  2149. PROCEDURE TOKENS(content IN CLOB,
  2150. restab IN OUT TOKEN_TAB)
  2151. IS
  2152. BEGIN
  2153. BLDIN_TOKENS(voca_name,content,restab,SPILIT_POLICY);
  2154. END;
  2155. PROCEDURE TOKENS2(index_name IN VARCHAR2,
  2156. textkey IN VARCHAR2,
  2157. restab IN OUT TOKEN_TAB)
  2158. IS
  2159. BEGIN
  2160. NULL;
  2161. END;
  2162. PROCEDURE TOKENS2(index_name IN VARCHAR2,
  2163. textkey IN VARCHAR2,
  2164. restab IN VARCHAR2,
  2165. query_id IN NUMBER DEFAULT 0)
  2166. IS
  2167. BEGIN
  2168. NULL;
  2169. END;
  2170. PROCEDURE TOKENS2(content IN VARCHAR2,
  2171. restab IN OUT TOKEN_TAB)
  2172. IS
  2173. BEGIN
  2174. BLDIN_TOKENS2(voca_name,content,restab,SPILIT_POLICY);
  2175. END;
  2176. PROCEDURE TOKENS2(content IN CLOB,
  2177. restab IN OUT TOKEN_TAB)
  2178. IS
  2179. BEGIN
  2180. BLDIN_TOKENS2(voca_name,content,restab,SPILIT_POLICY);
  2181. END;
  2182. END "SYSDBA"."CTX_DOC";
  2183. /
  2184. /***********创建DBMS_LOB包(用于支持大对象操作)***************/
  2185. ----包头
  2186. CREATE OR REPLACE PACKAGE SYSDBA.DBMS_LOB
  2187. IS
  2188. FUNCTION GETLENGTH(lob_loc BLOB) RETURN INTEGER;
  2189. FUNCTION GETLENGTH(lob_loc CLOB) RETURN INTEGER;
  2190. PROCEDURE READ(lob_loc BLOB,AMOUNT INTEGER,OFFSET INTEGER, OUT_BUFF OUT VARCHAR);
  2191. PROCEDURE READ(lob_loc CLOB,AMOUNT INTEGER,OFFSET INTEGER, OUT_BUFF OUT VARCHAR);
  2192. END SYSDBA.DBMS_LOB;
  2193. /
  2194. ----包体
  2195. CREATE PACKAGE BODY SYSDBA.DBMS_LOB
  2196. IS
  2197. FUNCTION GETLENGTH(lob_loc BLOB) RETURN INTEGER
  2198. IS
  2199. LANGUAGE "C"
  2200. NAME "BLDIN_BLOB_GETLENGTH";
  2201. FUNCTION GETLENGTH(lob_loc CLOB) RETURN INTEGER
  2202. IS
  2203. LANGUAGE "C"
  2204. NAME "BLDIN_CLOB_GETLENGTH";
  2205. PROCEDURE READ(lob_loc BLOB,AMOUNT INTEGER,OFFSET INTEGER, OUT_BUFF OUT VARCHAR)
  2206. IS
  2207. LANGUAGE "C"
  2208. NAME "BLDIN_BLOB_READ";
  2209. PROCEDURE READ(lob_loc CLOB,AMOUNT INTEGER,OFFSET INTEGER, OUT_BUFF OUT VARCHAR)
  2210. IS
  2211. LANGUAGE "C"
  2212. NAME "BLDIN_CLOB_READ";
  2213. END SYSDBA.DBMS_LOB;
  2214. /
  2215. -----UTL_RAW包--------------------
  2216. CREATE PACKAGE SYSDBA.UTL_RAW
  2217. IS
  2218. big_endian CONSTANT PLS_INTEGER := 1;
  2219. little_endian CONSTANT PLS_INTEGER := 2;
  2220. machine_endian CONSTANT PLS_INTEGER := 3;
  2221. FUNCTION BIT_AND (r1 IN RAW, r2 IN RAW) RETURN RAW;
  2222. FUNCTION BIT_COMPLEMENT (r1 IN RAW, r2 IN RAW) RETURN RAW;
  2223. FUNCTION BIT_OR (r1 IN RAW, r2 IN RAW) RETURN RAW;
  2224. FUNCTION BIT_XOR (r1 IN RAW, r2 IN RAW) RETURN RAW;
  2225. FUNCTION CAST_FROM_BINARY_DOUBLE (n IN BINARY_DOUBLE, endianess IN BINARY_INTEGER DEFAULT 1) RETURN RAW;
  2226. FUNCTION CAST_FROM_BINARY_FLOAT (n IN BINARY_FLOAT, endianess IN BINARY_INTEGER DEFAULT 1) RETURN RAW;
  2227. FUNCTION CAST_FROM_BINARY_INTEGER (n IN BINARY_INTEGER, endianess IN BINARY_INTEGER DEFAULT 1) RETURN RAW;
  2228. FUNCTION CAST_FROM_NUMBER (n IN NUMBER) RETURN RAW;
  2229. FUNCTION CAST_TO_BINARY_DOUBLE (r IN RAW,endianess IN BINARY_INTEGER DEFAULT 1) RETURN BINARY_DOUBLE;
  2230. FUNCTION CAST_TO_BINARY_FLOAT (r IN RAW, endianess IN BINARY_INTEGER DEFAULT 1) RETURN BINARY_FLOAT;
  2231. FUNCTION CAST_TO_BINARY_INTEGER (r IN RAW, endianess IN BINARY_INTEGER DEFAULT 1) RETURN BINARY_INTEGER;
  2232. FUNCTION CAST_TO_NUMBER (r IN RAW) RETURN NUMBER;
  2233. FUNCTION CAST_TO_NVARCHAR2 (r IN RAW) RETURN NVARCHAR2;
  2234. FUNCTION CAST_TO_RAW (c IN VARCHAR2) RETURN RAW;
  2235. FUNCTION CAST_TO_VARCHAR2 (r IN RAW) RETURN VARCHAR2;
  2236. FUNCTION COMPARE (r1 IN RAW,r2 IN RAW,pad IN RAW DEFAULT NULL) RETURN INTEGER;
  2237. FUNCTION CONCAT (r1 IN RAW DEFAULT NULL,
  2238. r2 IN RAW DEFAULT NULL,
  2239. r3 IN RAW DEFAULT NULL,
  2240. r4 IN RAW DEFAULT NULL,
  2241. r5 IN RAW DEFAULT NULL,
  2242. r6 IN RAW DEFAULT NULL,
  2243. r7 IN RAW DEFAULT NULL,
  2244. r8 IN RAW DEFAULT NULL,
  2245. r9 IN RAW DEFAULT NULL,
  2246. r10 IN RAW DEFAULT NULL,
  2247. r11 IN RAW DEFAULT NULL,
  2248. r12 IN RAW DEFAULT NULL)
  2249. RETURN RAW;
  2250. FUNCTION CONVERT(r IN RAW,to_charset IN VARCHAR2,from_charset IN VARCHAR2) RETURN RAW;
  2251. FUNCTION COPIES (r IN RAW,n IN INTEGER) RETURN RAW;
  2252. FUNCTION LENGTH (r IN RAW) RETURN INTEGER;
  2253. FUNCTION OVERLAY(overlay_str IN RAW,target IN RAW,
  2254. pos IN BINARY_INTEGER DEFAULT 1,
  2255. len IN BINARY_INTEGER DEFAULT NULL,
  2256. pad IN RAW DEFAULT NULL)
  2257. RETURN RAW;
  2258. FUNCTION REVERSE (r IN RAW) RETURN RAW;
  2259. FUNCTION SUBSTR (r IN RAW,pos IN BINARY_INTEGER,len IN BINARY_INTEGER DEFAULT NULL) RETURN RAW;
  2260. FUNCTION TRANSLATE (r IN RAW,from_set IN RAW,to_set IN RAW) RETURN RAW;
  2261. FUNCTION TRANSLITERATE (r IN RAW,to_set IN RAW DEFAULT NULL,from_set IN RAW DEFAULT NULL,pad IN RAW DEFAULT NULL) RETURN RAW;
  2262. FUNCTION XRANGE (start_byte IN RAW DEFAULT NULL,end_byte IN RAW DEFAULT NULL) RETURN RAW;
  2263. END SYSDBA.UTL_RAW;
  2264. /
  2265. CREATE PACKAGE BODY SYSDBA.UTL_RAW
  2266. IS
  2267. FUNCTION BIT_AND (r1 IN RAW, r2 IN RAW) RETURN RAW
  2268. IS
  2269. LANGUAGE "C"
  2270. NAME "BLDIN_RAW_BIT_AND";
  2271. FUNCTION BIT_COMPLEMENT (r1 IN RAW, r2 IN RAW) RETURN RAW
  2272. IS
  2273. LANGUAGE "C"
  2274. NAME "BLDIN_RAW_COMPLEMENT";
  2275. FUNCTION BIT_OR (r1 IN RAW, r2 IN RAW) RETURN RAW
  2276. IS
  2277. LANGUAGE "C"
  2278. NAME "BLDIN_RAW_BIT_OR";
  2279. FUNCTION BIT_XOR (r1 IN RAW, r2 IN RAW) RETURN RAW
  2280. IS
  2281. LANGUAGE "C"
  2282. NAME "BLDIN_RAW_BIT_XOR";
  2283. FUNCTION CAST_FROM_BINARY_DOUBLE (n IN BINARY_DOUBLE, endianess IN BINARY_INTEGER DEFAULT 1) RETURN RAW
  2284. IS
  2285. LANGUAGE "C"
  2286. NAME "BLDIN_DOUBLE2RAW";
  2287. FUNCTION CAST_FROM_BINARY_FLOAT (n IN BINARY_FLOAT, endianess IN BINARY_INTEGER DEFAULT 1) RETURN RAW
  2288. IS
  2289. LANGUAGE "C"
  2290. NAME "BLDIN_FLOAT2RAW";
  2291. FUNCTION CAST_FROM_BINARY_INTEGER (n IN BINARY_INTEGER, endianess IN BINARY_INTEGER DEFAULT 1) RETURN RAW
  2292. IS
  2293. LANGUAGE "C"
  2294. NAME "BLDIN_INTEGER2RAW";
  2295. FUNCTION CAST_FROM_NUMBER (n IN NUMBER) RETURN RAW
  2296. IS
  2297. LANGUAGE "C"
  2298. NAME "BLDIN_NUMERIC2RAW";
  2299. FUNCTION CAST_TO_BINARY_DOUBLE (r IN RAW,endianess IN BINARY_INTEGER DEFAULT 1) RETURN BINARY_DOUBLE
  2300. IS
  2301. LANGUAGE "C"
  2302. NAME "BLDIN_RAW2DOUBLE";
  2303. FUNCTION CAST_TO_BINARY_FLOAT (r IN RAW, endianess IN BINARY_INTEGER DEFAULT 1) RETURN BINARY_FLOAT
  2304. IS
  2305. LANGUAGE "C"
  2306. NAME "BLDIN_RAW2FLOAT";
  2307. FUNCTION CAST_TO_BINARY_INTEGER (r IN RAW, endianess IN BINARY_INTEGER DEFAULT 1) RETURN BINARY_INTEGER
  2308. IS
  2309. LANGUAGE "C"
  2310. NAME "BLDIN_RAW2INTEGER";
  2311. FUNCTION CAST_TO_NUMBER (r IN RAW) RETURN NUMBER
  2312. IS
  2313. LANGUAGE "C"
  2314. NAME "BLDIN_RAW2NUMERIC";
  2315. FUNCTION CAST_TO_NVARCHAR2 (r IN RAW) RETURN NVARCHAR2
  2316. IS
  2317. LANGUAGE "C"
  2318. NAME "BLDIN_RAW2NVARCHAR2";
  2319. FUNCTION CAST_TO_RAW (c IN VARCHAR2) RETURN RAW
  2320. IS
  2321. LANGUAGE "C"
  2322. NAME "BLDIN_VARCHAR22RAW";
  2323. FUNCTION CAST_TO_VARCHAR2 (r IN RAW) RETURN VARCHAR2
  2324. IS
  2325. LANGUAGE "C"
  2326. NAME "BLDIN_RAW2VARCHAE2";
  2327. FUNCTION COMPARE (r1 IN RAW,r2 IN RAW,pad IN RAW DEFAULT NULL) RETURN INTEGER
  2328. IS
  2329. LANGUAGE "C"
  2330. NAME "BLDIN_RAW_COMPARE";
  2331. FUNCTION CONCAT (r1 IN RAW DEFAULT NULL,
  2332. r2 IN RAW DEFAULT NULL,
  2333. r3 IN RAW DEFAULT NULL,
  2334. r4 IN RAW DEFAULT NULL,
  2335. r5 IN RAW DEFAULT NULL,
  2336. r6 IN RAW DEFAULT NULL,
  2337. r7 IN RAW DEFAULT NULL,
  2338. r8 IN RAW DEFAULT NULL,
  2339. r9 IN RAW DEFAULT NULL,
  2340. r10 IN RAW DEFAULT NULL,
  2341. r11 IN RAW DEFAULT NULL,
  2342. r12 IN RAW DEFAULT NULL)
  2343. RETURN RAW
  2344. IS
  2345. LANGUAGE "C"
  2346. NAME "BLDIN_RAW_CONCAT";
  2347. FUNCTION CONVERT(r IN RAW,to_charset IN VARCHAR2,from_charset IN VARCHAR2) RETURN RAW
  2348. IS
  2349. LANGUAGE "C"
  2350. NAME "BLDIN_RAW_CONVERT";
  2351. FUNCTION COPIES (r IN RAW,n IN INTEGER) RETURN RAW
  2352. IS
  2353. LANGUAGE "C"
  2354. NAME "BLDIN_RAW_COPYS";
  2355. FUNCTION LENGTH (r IN RAW) RETURN INTEGER
  2356. IS
  2357. LANGUAGE "C"
  2358. NAME "BLDIN_RAW_LENGTH";
  2359. FUNCTION OVERLAY(overlay_str IN RAW,target IN RAW,
  2360. pos IN BINARY_INTEGER DEFAULT 1,
  2361. len IN BINARY_INTEGER DEFAULT NULL,
  2362. pad IN RAW DEFAULT NULL)
  2363. RETURN RAW
  2364. IS
  2365. LANGUAGE "C"
  2366. NAME "BLDIN_RAW_OVERLAY";
  2367. FUNCTION REVERSE (r IN RAW) RETURN RAW
  2368. IS
  2369. LANGUAGE "C"
  2370. NAME "BLDIN_RAW_REVERSE";
  2371. FUNCTION SUBSTR (r IN RAW,pos IN BINARY_INTEGER,len IN BINARY_INTEGER DEFAULT NULL) RETURN RAW
  2372. IS
  2373. LANGUAGE "C"
  2374. NAME "BLDIN_RAW_SUBSTR";
  2375. FUNCTION TRANSLATE (r IN RAW,from_set IN RAW,to_set IN RAW) RETURN RAW
  2376. IS
  2377. LANGUAGE "C"
  2378. NAME "BLDIN_RAW_TRANSLATE";
  2379. FUNCTION TRANSLITERATE (r IN RAW,to_set IN RAW DEFAULT NULL,from_set IN RAW DEFAULT NULL,pad IN RAW DEFAULT NULL) RETURN RAW
  2380. IS
  2381. LANGUAGE "C"
  2382. NAME "BLDIN_RAW_TRANSLITERATE";
  2383. FUNCTION XRANGE (start_byte IN RAW DEFAULT NULL,end_byte IN RAW DEFAULT NULL) RETURN RAW
  2384. IS
  2385. LANGUAGE "C"
  2386. NAME "BLDIN_RAW_XRANGE";
  2387. END SYSDBA.UTL_RAW;
  2388. /
  2389. CREATE OR REPLACE PACKAGE SYSDBA.DBMS_REPLICATION
  2390. IS
  2391. PROCEDURE CREATE_MODIFY_SOURCE(SCHEMA_NAME VARCHAR,TABLE_NAME VARCHAR);
  2392. PROCEDURE DROP_MODIFY_SOURCE(SCHEMA_NAME VARCHAR,TABLE_NAME VARCHAR);
  2393. PROCEDURE CREATE_SUBSCRIBER(SUBSCRIBER_NAME VARCHAR,USEER_NAME VARCHAR);
  2394. PROCEDURE DROP_SUBSCRIBER(SUBSCRIBER_NAME VARCHAR,USEER_NAME VARCHAR);
  2395. PROCEDURE SWITCH_FILE();
  2396. 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);
  2397. PROCEDURE DUMP_TABLE( TABLE_NAME VARCHAR, --表名
  2398. FILTER VARCHAR, --where 条件(不写where关键字)
  2399. PATH VARCHAR, --导出数据 INSERT SQL 的数据库端输出文件(NULL时不输出到文件)
  2400. IS_SEND BOOLEAN DEFAULT false, -- 是否将数据 INSERT SQL的结果集 返回客户端
  2401. IS_DUMP_META BOOLEAN DEFAULT false);-- 是否在数据前输出表定义DDL
  2402. END SYSDBA.DBMS_REPLICATION;
  2403. /
  2404. CREATE OR REPLACE PACKAGE BODY SYSDBA.DBMS_REPLICATION
  2405. IS
  2406. PROCEDURE CREATE_MODIFY_SOURCE(SCHEMA_NAME VARCHAR,TABLE_NAME VARCHAR)
  2407. IS
  2408. LANGUAGE "C"
  2409. NAME "BLDIN_CREATE_MODIFY_SOURCE";
  2410. PROCEDURE DROP_MODIFY_SOURCE(SCHEMA_NAME VARCHAR,TABLE_NAME VARCHAR)
  2411. IS
  2412. LANGUAGE "C"
  2413. NAME "BLDIN_DROP_MODIFY_SOURCE";
  2414. PROCEDURE CREATE_SUBSCRIBER(SUBSCRIBER_NAME VARCHAR,USEER_NAME VARCHAR)
  2415. IS
  2416. LANGUAGE "C"
  2417. NAME "BLDIN_CREATE_SUBSCRIBER";
  2418. PROCEDURE DROP_SUBSCRIBER(SUBSCRIBER_NAME VARCHAR,USEER_NAME VARCHAR)
  2419. IS
  2420. LANGUAGE "C"
  2421. NAME "BLDIN_DROP_SUBSCRIBER";
  2422. PROCEDURE SWITCH_FILE()
  2423. IS
  2424. LANGUAGE "C"
  2425. NAME "BLDIN_SWITCH_FILE";
  2426. 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)
  2427. IS
  2428. LANGUAGE "C"
  2429. NAME "BLDIN_POLL_MODIFY_DATA";
  2430. PROCEDURE DUMP_TABLE(TABLE_NAME VARCHAR,FILTER VARCHAR,PATH VARCHAR,IS_SEND BOOLEAN DEFAULT false,IS_DUMP_META BOOLEAN DEFAULT false)
  2431. IS
  2432. LANGUAGE "C"
  2433. NAME "BLDIN_DUMP_TABLE";
  2434. END SYSDBA.DBMS_REPLICATION;
  2435. /
  2436. CREATE OR REPLACE PACKAGE SYSDBA.DBMS_CRYPTO IS
  2437. -- hash算法
  2438. HASH_MD4 INTEGER := 1;
  2439. HASH_MD5 INTEGER := 2;
  2440. HASH_SH1 INTEGER := 3;
  2441. -- 消息认证码hash方式
  2442. HMAC_MD5 INTEGER := 1;
  2443. HMAC_SH1 INTEGER := 2;
  2444. -- 块加密算法
  2445. ENCRYPT_DES INTEGER := 1; -- 0x0001
  2446. ENCRYPT_3DES_2KEY INTEGER := 2; -- 0x0002
  2447. ENCRYPT_3DES INTEGER := 3; -- 0x0003
  2448. ENCRYPT_AES INTEGER := 4; -- 0x0004
  2449. ENCRYPT_PBE_MD5DES INTEGER := 5; -- 0x0005
  2450. ENCRYPT_AES128 INTEGER := 6; -- 0x0006
  2451. ENCRYPT_AES192 INTEGER := 7; -- 0x0007
  2452. ENCRYPT_AES256 INTEGER := 8; -- 0x0008
  2453. -- 块加密模式
  2454. CHAIN_CBC INTEGER := 256; -- 0x0100
  2455. CHAIN_CFB INTEGER := 512; -- 0x0200
  2456. CHAIN_ECB INTEGER := 768; -- 0x0300
  2457. CHAIN_OFB INTEGER := 1024; -- 0x0400
  2458. -- 块加密填充方式
  2459. PAD_PKCS5 INTEGER := 4096; -- 0x1000
  2460. PAD_NONE INTEGER := 8192; -- 0x2000
  2461. PAD_ZERO INTEGER := 12288; -- 0x3000
  2462. PAD_SELF INTEGER := 16384; -- 0x4000
  2463. -- 流加密算法
  2464. ENCRYPT_RC4 INTEGER := 129; -- 0x0081
  2465. -- 常用加密套件
  2466. DES_CBC_PKCS5 INTEGER := ENCRYPT_DES+ CHAIN_CBC+ PAD_PKCS5;
  2467. DES3_CBC_PKCS5 INTEGER := ENCRYPT_3DES+ CHAIN_CBC+ PAD_PKCS5;
  2468. AES_CBC_PKCS5 INTEGER := ENCRYPT_AES+ CHAIN_CBC+ PAD_PKCS5;
  2469. --加密接口
  2470. FUNCTION Encrypt (src IN RAW,typ IN INTEGER, key IN RAW,iv IN RAW DEFAULT NULL) RETURN RAW;
  2471. FUNCTION Encrypt (src IN VARCHAR,typ IN INTEGER, key IN VARCHAR,iv IN VARCHAR DEFAULT NULL) RETURN RAW;
  2472. PROCEDURE Encrypt (dst IN OUT BLOB,src IN BLOB,typ IN INTEGER,key IN RAW,iv IN RAW DEFAULT NULL);
  2473. PROCEDURE Encrypt (dst IN OUT BLOB,src IN CLOB ,typ IN INTEGER,key IN RAW,iv IN RAW DEFAULT NULL);
  2474. --解密接口
  2475. FUNCTION Decrypt (src IN RAW,typ IN INTEGER,key IN RAW,iv IN RAW DEFAULT NULL)RETURN RAW;
  2476. FUNCTION Decrypt (src IN RAW,typ IN INTEGER,key IN VARCHAR,iv IN VARCHAR DEFAULT NULL)RETURN VARCHAR;
  2477. PROCEDURE Decrypt (dst IN OUT BLOB,src IN BLOB,typ IN INTEGER,key IN RAW,iv IN RAW DEFAULT NULL);
  2478. PROCEDURE Decrypt (dst IN OUT CLOB,src IN BLOB,typ IN INTEGER,key IN RAW,iv IN RAW DEFAULT NULL);
  2479. --hash 接口
  2480. FUNCTION Hash (src IN RAW,typ IN INTEGER)RETURN RAW ;
  2481. FUNCTION Hash (src IN BLOB,typ IN INTEGER)RETURN RAW ;
  2482. FUNCTION Hash (src IN CLOB,typ IN INTEGER)RETURN RAW ;
  2483. --消息认证码
  2484. FUNCTION Mac (src IN RAW,typ IN INTEGER,key IN RAW)RETURN RAW;
  2485. FUNCTION Mac (src IN BLOB,typ IN INTEGER,key IN RAW)RETURN RAW;
  2486. FUNCTION Mac (src IN CLOB,typ IN INTEGER,key IN RAW)RETURN RAW;
  2487. --随机函数
  2488. FUNCTION RandomBytes (number_bytes IN INTEGER) RETURN RAW;
  2489. FUNCTION RandomNumber RETURN NUMBER;
  2490. FUNCTION RandomInteger RETURN INTEGER;
  2491. END SYSDBA.DBMS_CRYPTO;
  2492. /
  2493. CREATE OR REPLACE PACKAGE BODY SYSDBA.DBMS_CRYPTO IS
  2494. FUNCTION Encrypt (src IN VARCHAR,typ IN INTEGER, key IN VARCHAR,iv IN VARCHAR DEFAULT NULL) RETURN RAW
  2495. IS
  2496. LANGUAGE "C"
  2497. NAME "BLDIN_ENCRYPT1";
  2498. FUNCTION Decrypt (src IN RAW,typ IN INTEGER,key IN VARCHAR,iv IN VARCHAR DEFAULT NULL) RETURN VARCHAR
  2499. IS
  2500. LANGUAGE "C"
  2501. NAME "BLDIN_DECRYPT1";
  2502. FUNCTION Encrypt (src IN RAW,typ IN INTEGER, key IN RAW,iv IN RAW DEFAULT NULL) RETURN RAW
  2503. IS
  2504. LANGUAGE "C"
  2505. NAME "BLDIN_ENCRYPT1";
  2506. FUNCTION Decrypt (src IN RAW,typ IN INTEGER,key IN RAW,iv IN RAW DEFAULT NULL) RETURN RAW
  2507. IS
  2508. LANGUAGE "C"
  2509. NAME "BLDIN_DECRYPT1";
  2510. END SYSDBA.DBMS_CRYPTO;
  2511. /
  2512. CREATE OR REPLACE PACKAGE "SYSDBA"."DBMS_BACKUP"
  2513. COMMENT '备份应用程序包'
  2514. IS
  2515. /**
  2516. 参数:
  2517. planname 备份计划名称
  2518. plantype 备份类型 系统备份(BAK)or 逻辑备份(EXP)
  2519. path 备份文件输出路径,暂时只支持服务器端配置路径,后续考虑支持备到客户端
  2520. starttime 计划开始时间
  2521. period 计划执行周期,分钟为单位
  2522. **/
  2523. PROCEDURE Create_Plan(planname VARCHAR, plantype VARCHAR, path VARCHAR, starttime DATETIME, period INTERVAL DAY TO MINUTE);
  2524. /**
  2525. 参数:
  2526. planname 备份计划名称
  2527. ena true活动态,false禁用态(系统有且仅有一个计划为活动态)
  2528. **/
  2529. PROCEDURE Enable_Plan(planname VARCHAR, ena BOOLEAN);
  2530. /**
  2531. 参数:
  2532. planname 备份计划名称,不可删除活动态计划,删除时同时删除计划下所有项目
  2533. **/
  2534. PROCEDURE Drop_Plan(planname VARCHAR);
  2535. /**
  2536. 系统备份(BAK)项创建接口,包含增量和全备方式
  2537. 参数:
  2538. planname 备份计划名称
  2539. filename 备份数据文件名
  2540. time_offset 相对于计划开始时间的时间偏移(分钟为单位),不能超过计划周期
  2541. iperiod 计划执行周期,分钟为单位,全备时此参数为NULL
  2542. **/
  2543. PROCEDURE Add_Backup_Item(planname VARCHAR,filename VARCHAR, time_offset INTERVAL DAY TO MINUTE);
  2544. PROCEDURE Add_Backup_Inc_Item(planname VARCHAR,time_offset INTERVAL DAY TO MINUTE,iperiod INTERVAL DAY TO MINUTE DEFAULT NULL);
  2545. /**
  2546. 逻辑备份(EXP)项创建接口,包含库级和表级
  2547. 参数:
  2548. planname 备份计划名称
  2549. obj_name 库名或表名
  2550. obj_type 备份对象类型 取值(DATABASE,TABLE)
  2551. filename 备份数据文件名(必须包含路径信息)
  2552. time_offset 相对于计划开始时间的时间偏移(分钟为单位),不能超过计划周期
  2553. **/
  2554. PROCEDURE Add_Export_Item(planname VARCHAR,obj_name VARCHAR, obj_type VARCHAR, filename VARCHAR,time_offset INTERVAL DAY TO MINUTE);
  2555. /**
  2556. 文件项操作添加接口
  2557. 参数:
  2558. planname 备份计划名称
  2559. filename 备份数据文件名(必须包含路径信息)
  2560. bak_count 备份文件保留份数
  2561. optype 备份文件处理方式DELETE或MOVE
  2562. dstpath MOVE 类型是的目标路径
  2563. **/
  2564. PROCEDURE Add_File_Item(planname VARCHAR,filename VARCHAR, bak_count INTEGER,optype VARCHAR,dstpath VARCHAR DEFAULT NULL);
  2565. /**
  2566. 删除系统备份计划子项
  2567. 参数:
  2568. planname 备份计划名称
  2569. item_n 子项编号(创建时自动生成)
  2570. **/
  2571. PROCEDURE Drop_Item(planname VARCHAR, item_n INTEGER);
  2572. /**
  2573. 删除逻辑备份子项和文件操作子项
  2574. 参数:
  2575. planname 备份计划名称
  2576. objtype 对象类型 取值('DATABASE','TABLE','FILE')
  2577. **/
  2578. PROCEDURE Alter_Plan_Del_Item(planname VARCHAR,objtype VARCHAR,objname VARCHAR);
  2579. /**
  2580. 设置计划当前项目
  2581. 参数:
  2582. planname 备份计划名称
  2583. curr_item 当前项目编号
  2584. **/
  2585. PROCEDURE alter_modify_curr_item(planname VARCHAR,curr_item INTEGER);
  2586. /**
  2587. 设置下次运行时间
  2588. 参数:
  2589. planname 备份计划名称
  2590. curr_item 当前项目编号
  2591. next_run_time 下次运行时间
  2592. istart_t 增量开始时间
  2593. **/
  2594. PROCEDURE alter_modify_run_time(planname VARCHAR,curr_item INTEGER,next_run_time DATETIME,istart_t DATETIME DEFAULT NULL);
  2595. /**
  2596. 备份计划执行函数
  2597. **/
  2598. PROCEDURE Run();
  2599. /**
  2600. 日志文件删除接口,暂未使用
  2601. **/
  2602. PROCEDURE Del_xfn();
  2603. PROCEDURE FILE_OPTION(PATH VARCHAR,OBJ_NAME VARCHAR,BAK_COUNT INT,OP_TYPE VARCHAR,PLAN_NAME VARCHAR,ITEM_NO INT);
  2604. END "SYSDBA"."DBMS_BACKUP";
  2605. /
  2606. CREATE OR Replace Package Body "DBMS_BACKUP" IS
  2607. /************创建备份计划**********/
  2608. PROCEDURE Create_Plan(planname VARCHAR,
  2609. plantype VARCHAR,
  2610. path VARCHAR,
  2611. starttime DATETIME,
  2612. period INTERVAL DAY TO MINUTE) IS
  2613. LANGUAGE "C" NAME "BLDIN_BAK_CREATE_PLAN";
  2614. /*************设置备份计划的活动标志************/
  2615. PROCEDURE Enable_Plan(planname VARCHAR, b boolean) IS
  2616. LANGUAGE "C" NAME "BLDIN_BAK_MODIFY_PLAN_STATE";
  2617. /************删除备份计划*******************/
  2618. PROCEDURE Drop_Plan(planname VARCHAR) IS
  2619. LANGUAGE "C" NAME "BLDIN_BAK_DROP_PLAN";
  2620. /************增加全备份项目*************/
  2621. PROCEDURE Add_Backup_Item(planname VARCHAR,
  2622. filename VARCHAR,
  2623. time_offset INTERVAL DAY TO MINUTE) IS
  2624. LANGUAGE "C" NAME "BLDIN_BAK_ADD_BAK_ITEM";
  2625. /************增加增量备份项目*************/
  2626. PROCEDURE Add_Backup_Inc_Item(planname VARCHAR,
  2627. time_offset INTERVAL DAY TO MINUTE,
  2628. iperiod INTERVAL DAY TO MINUTE DEFAULT NULL) IS
  2629. LANGUAGE "C" NAME "BLDIN_BAK_ADD_INC_ITEM";
  2630. /************增加导出项目*************/
  2631. PROCEDURE Add_Export_Item(planname VARCHAR,
  2632. obj_name VARCHAR,
  2633. obj_type VARCHAR,
  2634. filename VARCHAR,
  2635. time_offset INTERVAL DAY TO MINUTE) IS
  2636. LANGUAGE "C" NAME "BLDIN_BAK_ADD_EXP_ITEM";
  2637. /************增加文件操作项目***************/
  2638. PROCEDURE Add_File_Item(planname VARCHAR,
  2639. filename VARCHAR,
  2640. bak_count INTEGER,
  2641. optype VARCHAR,
  2642. dstpath VARCHAR DEFAULT NULL) IS
  2643. LANGUAGE "C" NAME "BLDIN_BAK_ADD_FILE_ITEM";
  2644. /************删除项目****************/
  2645. PROCEDURE Drop_Item(planname VARCHAR, item_n INTEGER) IS
  2646. LANGUAGE "C" NAME "BLDIN_BAK_DROP_ITEM_BY_NO";
  2647. /****************************按名删除table,database,file子项函数************************************/
  2648. PROCEDURE Alter_Plan_Del_Item(planname VARCHAR,
  2649. objtype VARCHAR,
  2650. objname VARCHAR) IS
  2651. LANGUAGE "C" NAME "BLDIN_BAK_DROP_ITEM_BY_OBJNAME";
  2652. /****************************设置计划当前项目************************************/
  2653. PROCEDURE alter_modify_curr_item(planname VARCHAR, curr_item INTEGER) IS
  2654. LANGUAGE "C" NAME "BLDIN_BAK_MODIFY_PLAN_CURR_ITEM";
  2655. /****************************设置下次运行时间************************************/
  2656. PROCEDURE alter_modify_run_time(planname VARCHAR,
  2657. curr_item INTEGER,
  2658. next_run_time DATETIME,
  2659. istart_t DATETIME DEFAULT NULL) IS
  2660. LANGUAGE "C" NAME "BLDIN_BAK_MODIFY_ITEM_RUN_TIME";
  2661. /*************生成文件的时间后缀****************/
  2662. FUNCTION append_file_tail(srcpathname varchar) RETURN VARCHAR IS
  2663. pos INTEGER;
  2664. tail VARCHAR;
  2665. str_year VARCHAR;
  2666. str_month VARCHAR;
  2667. str_day VARCHAR;
  2668. str_hour VARCHAR;
  2669. str_minute VARCHAR;
  2670. str_second VARCHAR;
  2671. str_ext VARCHAR;
  2672. dstpathname VARCHAR;
  2673. BEGIN
  2674. if not FILE_EXISTS(srcpathname) then
  2675. RETURN NULL;
  2676. end if;
  2677. tail := to_char(sysdate);
  2678. str_year := substr(tail, 1, 4);
  2679. str_month := substr(tail, 6, 2);
  2680. str_day := substr(tail, 9, 2);
  2681. str_hour := substr(tail, 12, 2);
  2682. str_minute := substr(tail, 15, 2);
  2683. str_second := substr(tail, 18, 2);
  2684. tail := str_year || str_month || str_day || str_hour || str_minute ||
  2685. str_second;
  2686. pos := POSITION('.' IN REVERSE_STR(srcpathname));
  2687. if pos > 0 then
  2688. str_ext := tailing(srcpathname, pos - 1);
  2689. dstpathname := heading(srcpathname, len(srcpathname) - pos);
  2690. else
  2691. dstpathname := srcpathname;
  2692. end if;
  2693. dstpathname := dstpathname || '_' || tail || '.' || str_ext;
  2694. --send_msg(dstpathname);
  2695. RETURN dstpathname;
  2696. END;
  2697. /**********************取得文件末尾的创建时间********************/
  2698. FUNCTION get_file_create_time(filename VARCHAR, compfilename VARCHAR)
  2699. RETURN DATETIME IS
  2700. dt DATETIME;
  2701. dt_str VARCHAR;
  2702. str_year VARCHAR;
  2703. str_month VARCHAR;
  2704. str_day VARCHAR;
  2705. str_hour VARCHAR;
  2706. str_minute VARCHAR;
  2707. str_second VARCHAR;
  2708. pos INTEGER;
  2709. BEGIN
  2710. --在文件名中,取得时间串
  2711. dt_str := substr(filename, len(compfilename) + 2, 14);
  2712. if len(dt_str) != 14 then
  2713. dt_str := '99991231235959';
  2714. end if;
  2715. str_year := substr(dt_str, 1, 4);
  2716. str_month := substr(dt_str, 5, 2);
  2717. str_day := substr(dt_str, 7, 2);
  2718. str_hour := substr(dt_str, 9, 2);
  2719. str_minute := substr(dt_str, 11, 2);
  2720. str_second := substr(dt_str, 13, 2);
  2721. dt_str := str_year || '-' || str_month || '-' || str_day || ' ' ||
  2722. str_hour || ':' || str_minute || ':' || str_second;
  2723. dt := To_date(dt_str, 'yyyy-mm-dd hh24:mi:ss');
  2724. RETURN dt;
  2725. END;
  2726. /************取得指定路径下,匹配指定部分开始字符的最早的一个文件*********/
  2727. FUNCTION get_first_file(path VARCHAR,filename VARCHAR,bak_count out integer) RETURN VARCHAR IS
  2728. str_name varchar;
  2729. str_ext varchar;
  2730. str_filename varchar;
  2731. str_fileext varchar;
  2732. pos integer;
  2733. create_dt datetime;
  2734. ret_filename varchar;
  2735. dt_str varchar;
  2736. BEGIN
  2737. bak_count := 0;
  2738. ret_filename := NULL;
  2739. --检测路径存在
  2740. if not dir_exists(path) then
  2741. RAISE_APPLICATION_ERROR(-30012, '目标路径' || path || '不存在.');
  2742. end if;
  2743. --分离指定文件名的名字和后缀
  2744. pos := POSITION('.' IN REVERSE_STR(filename));
  2745. if pos > 0 then
  2746. str_ext := tailing(filename, pos - 1);
  2747. str_name := heading(filename, len(filename) - pos);
  2748. end if;
  2749. create_dt := To_date('9999-12-31 23:59:59', 'yyyy-mm-dd hh24:mi:ss');
  2750. FOR r IN (select * from TABLE(DBMS_INFO.FILE_LIST(path))) LOOP
  2751. if not r.is_dir then
  2752. pos := position('/' IN REVERSE_STR(r.db_path));
  2753. if pos > 0 then
  2754. str_filename := tailing(r.db_path, pos - 1);
  2755. else
  2756. str_filename := r.db_path;
  2757. end if;
  2758. pos := POSITION('.' IN REVERSE_STR(str_filename));
  2759. if pos > 0 then
  2760. str_fileext := tailing(str_filename, pos - 1);
  2761. str_filename := heading(str_filename, len(str_filename) - pos);
  2762. end if;
  2763. pos := position(str_name in str_filename);
  2764. if pos = 1 and '_' = substr(str_filename, len(str_name) + 1, 1) and
  2765. str_ext = str_fileext then
  2766. bak_count := bak_count + 1;
  2767. if create_dt > get_file_create_time(str_filename, str_name) then
  2768. create_dt := get_file_create_time(str_filename, str_name);
  2769. ret_filename := r.db_path;
  2770. end if;
  2771. end if;
  2772. end if;
  2773. END FOR;
  2774. RETURN ret_filename;
  2775. END;
  2776. /*****************************处理重命名操作********************************/
  2777. PROCEDURE rename_op(path VARCHAR, fname VARCHAR) IS
  2778. pos INTEGER;
  2779. srcfilename VARCHAR;
  2780. dstfilename VARCHAR;
  2781. BEGIN
  2782. --参数检测
  2783. IF path ISNULL THEN
  2784. RAISE_APPLICATION_ERROR(-30020, '参数path不能为空');
  2785. END IF;
  2786. IF fname ISNULL THEN
  2787. RAISE_APPLICATION_ERROR(-30020, '参数fname不能为空');
  2788. END IF;
  2789. --处理路径
  2790. pos := position('/' in reverse_str(path));
  2791. IF pos = 1 THEN
  2792. srcfilename := path;
  2793. ELSE
  2794. srcfilename := CONCAT(path, '/');
  2795. END IF;
  2796. srcfilename := CONCAT(srcfilename, fname);
  2797. dstfilename := append_file_tail(srcfilename);
  2798. IF dstfilename is not null then
  2799. if not RENAME_FILE(srcfilename, dstfilename) then
  2800. RAISE_APPLICATION_ERROR(-30015,'重命名文件' || srcfilename || '失败.');
  2801. end if;
  2802. end if;
  2803. END;
  2804. PROCEDURE Del_xfn() as
  2805. path_str varchar;
  2806. xfn_str varchar;
  2807. min_xfn integer;
  2808. path_len integer;
  2809. xfn integer;
  2810. BEGIN
  2811. select MIN_RESTORE_XFN into min_xfn from sys_ctl_vars;
  2812. for r in (select db_path
  2813. from TABLE(DBMS_INFO.FILE_LIST('/ARCH'))
  2814. ORDER BY DB_PATH) loop
  2815. path_str := r.db_path;
  2816. --取得归档号
  2817. path_len := len(path_str);
  2818. path_str := heading(path_str, path_len - 4);
  2819. xfn_str := tailing(path_str, path_len - 4 - len('/HOME/ARCH/REDO'));
  2820. xfn := atol(xfn_str);
  2821. --如果归档号小于最小安全号,则删除归档文件
  2822. if xfn < min_xfn then
  2823. DROP_FILE(r.db_path);
  2824. end if;
  2825. end for;
  2826. END;
  2827. PROCEDURE FILE_OPTION (PATH VARCHAR,OBJ_NAME VARCHAR,SAVE_BAK INT,OP_TYPE VARCHAR,PLAN_NAME VARCHAR,ITEM_NO INT,PATH_BAK VARCHAR)
  2828. AS
  2829. srcfilename VARCHAR;
  2830. bak_count int;
  2831. pos INTEGER;
  2832. tmp_item_no INTEGER;
  2833. s_t DATETIME;
  2834. bakpathname VARCHAR;
  2835. dstfilename VARCHAR;
  2836. BEGIN
  2837. --处理删除文件操作
  2838. IF UPPER(OP_TYPE) = 'DELETE' THEN
  2839. --先重命名
  2840. rename_op(PATH, OBJ_NAME);
  2841. --删除操作
  2842. srcfilename := get_first_file(PATH, OBJ_NAME, bak_count);
  2843. if srcfilename notnull and bak_count > SAVE_BAK then
  2844. if not DROP_FILE(srcfilename) then
  2845. RAISE_APPLICATION_ERROR(-30016,'删除文件' || srcfilename || '失败.');
  2846. end if;
  2847. end if;
  2848. --处理移动文件操作
  2849. ELSIF
  2850. UPPER(OP_TYPE) = 'MOVE' THEN
  2851. --先重命名
  2852. rename_op(PATH, OBJ_NAME);
  2853. --移动操作
  2854. srcfilename := get_first_file(PATH, OBJ_NAME, bak_count);
  2855. if srcfilename notnull and bak_count > SAVE_BAK then
  2856. pos := POSITION('/' IN REVERSE_STR(srcfilename));
  2857. if pos > 0 then
  2858. dstfilename := tailing(srcfilename, pos - 1);
  2859. end if;
  2860. if '/' = TAILING(PATH_BAK, 1) then
  2861. dstfilename := CONCAT(PATH_BAK, dstfilename);
  2862. else
  2863. dstfilename := CONCAT('/', dstfilename);
  2864. dstfilename := CONCAT(PATH_BAK, dstfilename);
  2865. end if;
  2866. if not RENAME_FILE(srcfilename, dstfilename) then
  2867. RAISE_APPLICATION_ERROR(-30017,'移动文件' || srcfilename || '失败.');
  2868. end if;
  2869. end if;
  2870. END IF;
  2871. END;--end file_op
  2872. /************备份计划的执行体(由JOB管理器调用)****************/
  2873. PROCEDURE Run() IS
  2874. mark_str VARCHAR;
  2875. sql_str VARCHAR;
  2876. tv INTERVAL DAY TO MINUTE;
  2877. nt DATETIME;
  2878. tmp_item_no INTEGER;
  2879. s_t DATETIME;
  2880. bakpathname VARCHAR;
  2881. option_type varchar;
  2882. BEGIN
  2883. --提取活动计划中到执行时间的子项
  2884. FOR r IN (SELECT * FROM DBA_BACKUP_ITEMS R1 ,DBA_BACKUP_PLANS R2
  2885. WHERE r2.ENABLE=true AND NEXT_RUN_T < SYSDATE AND R1.PLAN_NAME=R2.PLAN_NAME
  2886. ORDER BY R1.PLAN_NAME, ITEM_NO) LOOP
  2887. IF r.op_type='BACKUP' THEN
  2888. option_type:='BACKUP SYSTEM';
  2889. ELSIF r.op_type='BACKUP_INC' THEN
  2890. option_type:='BACKUP SYSTEM INCREMENT';
  2891. ELSIF r.op_type='EXPORT' AND r.OBJ_TYPE = 'DATABASE' THEN
  2892. option_type:='EXPORT DATABASE';
  2893. ELSIF r.op_type='EXPORT' AND r.OBJ_TYPE = 'TABLE' THEN
  2894. option_type:='EXPORT TABLE';
  2895. END IF;
  2896. ----每次备份前进行文件重名处理,并根据文件处理项进行处理,增量除外
  2897. IF R.OP_TYPE = 'BACKUP' or R.OP_TYPE='EXPORT' THEN
  2898. FILE_OPTION(r.PATH,r.FILE_NAME,r.FILE_KEEP_CNT,r.file_op,r.plan_name,r.item_no,r.FILE_MOVE_PATH);
  2899. nt := r.NEXT_RUN_T;
  2900. while nt <= SYSDATE LOOP
  2901. nt := nt + r.PERIOD;
  2902. END LOOP;
  2903. --修改下次执行时间(无论成功失败,均修改执行时间)
  2904. dbms_backup.alter_modify_curr_item(r.PLAN_NAME, r.ITEM_NO);
  2905. dbms_backup.alter_modify_run_time(r.PLAN_NAME, r.ITEM_NO, nt);
  2906. ELSE
  2907. nt := r.NEXT_RUN_T;
  2908. s_t := r.ISTART_T;
  2909. WHILE nt <= SYSDATE LOOP
  2910. nt := nt + r.IPERIOD;
  2911. IF nt > s_t + r.PERIOD THEN
  2912. s_t := s_t + r.PERIOD;
  2913. nt := s_t + r.TIME_OFF;
  2914. END IF;
  2915. END LOOP;
  2916. dbms_backup.alter_modify_curr_item(r.PLAN_NAME, r.ITEM_NO);
  2917. dbms_backup.alter_modify_run_time(r.PLAN_NAME, r.ITEM_NO, nt, s_t);
  2918. END IF;
  2919. bakpathname := r.PATH;
  2920. IF '/' != TAILING(bakpathname, 1) THEN
  2921. bakpathname := CONCAT(bakpathname, '/');
  2922. END IF;
  2923. bakpathname := CONCAT(bakpathname, r.FILE_NAME);
  2924. IF r.OP_TYPE = 'BACKUP' THEN
  2925. sql_str := 'BACKUP SYSTEM TO ''' || bakpathname || ''' online;';
  2926. ELSIF r.OP_TYPE = 'BACKUP_INC' THEN
  2927. sql_str := 'BACKUP SYSTEM INCREMENT APPEND TO ''' || bakpathname || ''' online;';
  2928. ELSIF r.OP_TYPE = 'EXPORT' AND r.OBJ_TYPE = 'DATABASE' THEN
  2929. sql_str := 'BACKUP DATABASE TO ''' || bakpathname || ''';';
  2930. ELSIF r.OP_TYPE = 'EXPORT' AND r.OBJ_TYPE = 'TABLE' THEN
  2931. sql_str := 'BACKUP TABLE ' || r.OBJ_NAME || ' APPEND TO ''' || bakpathname || ''';';
  2932. ELSE
  2933. CONTINUE;
  2934. END IF;
  2935. BEGIN
  2936. EXECUTE IMMEDIATE sql_str;
  2937. END;--end execute
  2938. END FOR;
  2939. END; --end Run
  2940. END DBMS_BACKUP;
  2941. /
  2942. CREATE OR REPLACE PACKAGE SYSDBA.DBMS_METADATA
  2943. IS
  2944. FUNCTION GET_DDL(obj_name IN VARCHAR) RETURN CLOB;
  2945. FUNCTION GET_DDL(obj_type IN VARCHAR,obj_name IN VARCHAR,schema_name IN VARCHAR DEFAULT NULL) RETURN CLOB;
  2946. FUNCTION GET_DDL_INDEX(tab_name IN VARCHAR, idx_name IN VARCHAR DEFAULT 'ALL') RETURN CLOB;
  2947. END SYSDBA.DBMS_METADATA;
  2948. /
  2949. CREATE OR REPLACE PACKAGE BODY SYSDBA.DBMS_METADATA
  2950. IS
  2951. FUNCTION GET_DDL(obj_name IN VARCHAR) RETURN CLOB
  2952. IS
  2953. LANGUAGE "C"
  2954. NAME "BLDIN_GET_DDL";
  2955. FUNCTION GET_DDL(obj_type IN VARCHAR,obj_name IN VARCHAR,schema_name IN VARCHAR DEFAULT NULL) RETURN CLOB
  2956. IS
  2957. LANGUAGE "C"
  2958. NAME "BLDIN_GET_DDL_P3";
  2959. FUNCTION GET_DDL_INDEX(tab_name IN VARCHAR, idx_name IN VARCHAR DEFAULT 'ALL') RETURN CLOB
  2960. IS
  2961. LANGUAGE "C"
  2962. NAME "BLDIN_GET_DDL_INDEX";
  2963. END SYSDBA.DBMS_METADATA;
  2964. /
  2965. ----------数据库通用工具包(定义)------------------
  2966. CREATE OR REPLACE PACKAGE SYSDBA.DBMS_UTILITY
  2967. IS
  2968. FUNCTION GET_TIME() RETURN BIGINT;
  2969. FUNCTION FORMAT_ERROR_STACK() RETURN VARCHAR(5000);
  2970. FUNCTION FORMAT_ERROR_BACKTRACE() RETURN VARCHAR(5000);
  2971. PROCEDURE OPEN_TABLE(name IN VARCHAR, --表名 ('*' 当前库下所有表,'schema_name.*' 指定模式下所有表,'tab_name' 当前库 模式下的表)
  2972. node_id IN INTEGER) --节点id ('0' 当前节点, '-1' 所有节点, '大于0' 指定节点)
  2973. AUTHID USER;
  2974. END SYSDBA.DBMS_UTILITY;
  2975. /
  2976. ----------数据库通用工具包(实现)------------------
  2977. CREATE OR REPLACE PACKAGE BODY SYSDBA.DBMS_UTILITY
  2978. IS
  2979. FUNCTION GET_TIME() RETURN BIGINT
  2980. IS
  2981. LANGUAGE "C"
  2982. NAME "BLDIN_GET_TIME";
  2983. FUNCTION FORMAT_ERROR_STACK() RETURN VARCHAR(5000)
  2984. IS
  2985. BEGIN
  2986. return SQLERRM;
  2987. END;
  2988. FUNCTION FORMAT_ERROR_BACKTRACE() RETURN VARCHAR(5000)
  2989. IS
  2990. LANGUAGE "C"
  2991. NAME "BLDIN_FORMAT_ERROR_BACKTRACE";
  2992. PROCEDURE OPEN_TABLE(name IN VARCHAR, node_id IN INTEGER)
  2993. IS
  2994. LANGUAGE "C"
  2995. NAME "BLDIN_OPEN_TABLE";
  2996. END SYSDBA.DBMS_UTILITY;
  2997. /
  2998. CREATE OR REPLACE PACKAGE DBMS_RANDOM AS
  2999. -- Seed with a binary integer
  3000. PROCEDURE SEED(val IN INTEGER);
  3001. -- Seed with a string (up to length 2000)
  3002. PROCEDURE SEED(val IN VARCHAR2);
  3003. -- Get a random 18-digit precision number, 0.0 <= value < 1.0
  3004. FUNCTION VALUE RETURN NUMBER(38,18);
  3005. -- get a random Oracle number x, low <= x < high
  3006. FUNCTION VALUE (low IN NUMBER, high IN NUMBER) RETURN NUMBER(38,18);
  3007. -- get a random number from a normal distribution
  3008. FUNCTION normal RETURN NUMBER ;
  3009. -- get a random string
  3010. FUNCTION STRING (opt char, len NUMBER)
  3011. /* "opt" specifies that the returned string may contain:
  3012. 'u','U' : upper case alpha characters only
  3013. 'l','L' : lower case alpha characters only
  3014. 'a','A' : alpha characters only (mixed case)
  3015. 'x','X' : any alpha-numeric characters (upper)
  3016. 'p','P' : any printable characters
  3017. */
  3018. RETURN VARCHAR2 ; -- string of <len> characters
  3019. -- Obsolete, just calls seed(val)
  3020. PROCEDURE INITIALIZE(val IN INTEGER);
  3021. -- Obsolete, get integer in ( -power(2,31) <= random < power(2,31) )
  3022. FUNCTION RANDOM RETURN INTEGER;
  3023. TYPE NUM_ARRAY IS TABLE OF NUMBER(38,38) INDEX BY INTEGER;
  3024. END DBMS_RANDOM;
  3025. /
  3026. CREATE OR REPLACE PACKAGE BODY DBMS_RANDOM AS
  3027. mem num_array; -- big internal state hidden from the user
  3028. counter INTEGER := 55; -- counter through the results
  3029. saved_norm NUMBER := NULL; -- unused random normally distributed value
  3030. need_init BOOLEAN := TRUE; -- do we still need to initialize
  3031. -- Seed the random number generator with a INTEGER
  3032. PROCEDURE SEED(val IN INTEGER) IS
  3033. BEGIN
  3034. SEED(TO_CHAR(val));
  3035. END SEED;
  3036. -- Seed the random number generator with a string.
  3037. PROCEDURE SEED(val IN VARCHAR2) IS
  3038. junk VARCHAR2(2000);
  3039. piece VARCHAR2(20);
  3040. randval NUMBER(38,37);
  3041. mytemp NUMBER(38,0);
  3042. vatemp NUMBER(38,14);
  3043. j INTEGER;
  3044. BEGIN
  3045. need_init := FALSE;
  3046. saved_norm := NULL;
  3047. counter := 0;
  3048. junk := val;
  3049. FOR i IN 0..54 LOOP
  3050. piece := SUBSTR(junk,1,19);
  3051. randval := 0;
  3052. j := 1;
  3053. -- convert 19 characters to a 38-digit number
  3054. FOR j IN 1..19 LOOP
  3055. randval := 1e2*randval + NVL(ASCII(SUBSTR(piece,j,1)),0.0);
  3056. END LOOP;
  3057. -- try to avoid lots of zeros
  3058. randval := randval*1e-38+i*.01020304050607080910111213141516171819;
  3059. mem(i) := randval - TRUNC(randval);
  3060. -- we've handled these first 19 characters already; move on
  3061. junk := SUBSTR(junk,20);
  3062. END LOOP;
  3063. randval := mem(54);
  3064. FOR j IN 0..10 LOOP
  3065. FOR i IN 0..54 LOOP
  3066. -- barrelshift mem(i-1) by 24 digits
  3067. vatemp := randval * 1e24;
  3068. mytemp := TRUNC(randval);
  3069. randval := (randval - mytemp) + (mytemp * 1e-38);
  3070. -- add it to mem(i)
  3071. randval := mem(i)+randval;
  3072. IF (randval >= 1.0) THEN
  3073. randval := randval - 1.0;
  3074. END IF;
  3075. -- record the result
  3076. mem(i) := randval;
  3077. END LOOP;
  3078. END LOOP;
  3079. END seed;
  3080. -- give values to the user
  3081. -- Delayed Fibonacci, pilfered from Knuth volume 2
  3082. FUNCTION VALUE RETURN NUMBER(38,18) IS
  3083. randval NUMBER(38,18);
  3084. BEGIN
  3085. counter := counter + 1;
  3086. IF counter >= 55 THEN
  3087. -- initialize if needed
  3088. IF (need_init = TRUE) THEN
  3089. SEED(TO_CHAR(SYSDATE,'MM-DD-YYYY HH24:MI:SS') ||
  3090. USER || USERENV('SESSIONID'));
  3091. ELSE
  3092. -- need to generate 55 more results
  3093. FOR i IN 0..30 LOOP
  3094. randval := mem(i+24) + mem(i);
  3095. IF (randval >= 1.0) THEN
  3096. randval := randval - 1.0;
  3097. END IF;
  3098. mem(i) := randval;
  3099. END LOOP;
  3100. FOR i IN 31..54 LOOP
  3101. randval := mem(i-31) + mem(i);
  3102. IF (randval >= 1.0) THEN
  3103. randval := randval - 1.0;
  3104. END IF;
  3105. mem(i) := randval;
  3106. END LOOP;
  3107. END IF;
  3108. counter := 0;
  3109. END IF;
  3110. RETURN mem(counter)*mem(counter)*mem(counter);
  3111. END VALUE;
  3112. -- Random 38-digit number between LOW and HIGH.
  3113. FUNCTION VALUE ( low in NUMBER, high in NUMBER) RETURN NUMBER(38,18)
  3114. is
  3115. val numeric(38,18);
  3116. BEGIN
  3117. val := VALUE();
  3118. val := val*(high-low);
  3119. RETURN val+low;
  3120. END VALUE;
  3121. -- Random numbers in a normal distribution.
  3122. -- Pilfered from Knuth volume 2.
  3123. FUNCTION NORMAL RETURN NUMBER is
  3124. -- 38 decimal places: Mean 0, Variance 1
  3125. v1 NUMBER(38,18);
  3126. v2 NUMBER(38,18);
  3127. r2 NUMBER(38,18);
  3128. fac NUMBER(38,18);
  3129. BEGIN
  3130. IF saved_norm is not NULL THEN -- saved from last time
  3131. v1 := saved_norm; -- to be returned this time
  3132. saved_norm := NULL;
  3133. ELSE
  3134. r2 := 2;
  3135. -- Find two independent uniform variables
  3136. WHILE r2 > 1 OR r2 = 0 LOOP
  3137. v1 := value();
  3138. v1 := v1 + v1 - 1;
  3139. v2 := value();
  3140. v2 := v2 + v2 - 1;
  3141. r2 := v1*v1 + v2*v2; -- r2 is radius
  3142. END LOOP; -- 0 < r2 <= 1: in unit circle
  3143. /* Now derive two independent normally-distributed variables */
  3144. fac := sqrt(-2*ln(r2)/r2);
  3145. v1 := v1*fac; -- to be returned this time
  3146. saved_norm := v2*fac; -- to be saved for next time
  3147. END IF;
  3148. RETURN v1;
  3149. END NORMAL;
  3150. -- Random string. Pilfered from Chris Ellis.
  3151. FUNCTION STRING (opt char, len NUMBER)
  3152. RETURN VARCHAR2 is -- string of <len> characters
  3153. optx char (1) := lower(opt);
  3154. rng NUMBER;
  3155. tmp NUMBER(38,18);
  3156. n INTEGER;
  3157. ccs VARCHAR2 (128); -- candidate character subset
  3158. xstr VARCHAR2 (4000) := NULL;
  3159. BEGIN
  3160. IF optx = 'u' THEN -- upper case alpha characters only
  3161. ccs := 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  3162. rng := 26;
  3163. ELSIF optx = 'l' THEN -- lower case alpha characters only
  3164. ccs := 'abcdefghijklmnopqrstuvwxyz';
  3165. rng := 26;
  3166. ELSIF optx = 'a' THEN -- alpha characters only (mixed case)
  3167. ccs := 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' ||
  3168. 'abcdefghijklmnopqrstuvwxyz';
  3169. rng := 52;
  3170. ELSIF optx = 'x' THEN -- any alpha-numeric characters (upper)
  3171. ccs := '0123456789' ||
  3172. 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  3173. rng := 36;
  3174. ELSIF optx = 'p' THEN -- any printable char (ASCII subset)
  3175. ccs := ' !"#$%&''()*+,-./' || '0123456789' || ':;<=>?@' ||
  3176. 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' || '[\]^_`' ||
  3177. 'abcdefghijklmnopqrstuvwxyz' || '{|}~' ;
  3178. rng := 95;
  3179. ELSE
  3180. ccs := 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  3181. rng := 26; -- default to upper case
  3182. END IF;
  3183. FOR i IN 1 .. least(len,4000) LOOP
  3184. /* Get random integer within specified range */
  3185. tmp := rng * value;
  3186. n := TRUNC(tmp) + 1;
  3187. /* Append character to string */
  3188. xstr := xstr || SUBSTR(ccs,n,1);
  3189. END LOOP;
  3190. RETURN xstr;
  3191. END STRING;
  3192. -- For compatibility with 8.1
  3193. PROCEDURE INITIALIZE(val IN INTEGER) IS
  3194. BEGIN
  3195. SEED(to_char(val));
  3196. END INITIALIZE;
  3197. -- For compatibility with 8.1
  3198. -- Random INTEGER, -power(2,31) <= Random < power(2,31)
  3199. -- Delayed Fibonacci, pilfered from Knuth volume 2
  3200. FUNCTION RANDOM RETURN INTEGER IS
  3201. BEGIN
  3202. RETURN TRUNC(Value*4294967296)-2147483648;
  3203. END RANDOM;
  3204. END DBMS_RANDOM;
  3205. /
  3206. CREATE OR REPLACE PACKAGE SYSDBA.DBMS_JOB
  3207. IS
  3208. 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);
  3209. PROCEDURE RUN(job INTEGER,force IN BOOLEAN DEFAULT FALSE);
  3210. PROCEDURE REMOVE(job INTEGER);
  3211. END SYSDBA.DBMS_JOB;
  3212. /
  3213. CREATE OR REPLACE PACKAGE BODY SYSDBA.DBMS_JOB
  3214. IS
  3215. 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)
  3216. IS
  3217. name varchar;
  3218. BEGIN
  3219. name := dbms_random.string('u',20);
  3220. DBMS_SCHEDULER.CREATE_JOB(name,'stored_procedure',what,0,next_date,pop_interval,'2099-12-31 00:00:00','JOB_CLASS',force,FALSE,NULL);
  3221. SELECT JOB_ID INTO job FROM ALL_JOBS WHERE JOB_NAME=name;
  3222. END;
  3223. PROCEDURE RUN(job INTEGER,force IN BOOLEAN DEFAULT FALSE)
  3224. IS
  3225. name varchar;
  3226. BEGIN
  3227. SELECT JOB_NAME INTO name FROM ALL_JOBS WHERE JOB_ID=job;
  3228. DBMS_SCHEDULER.RUN_JOB(name,force);
  3229. END;
  3230. PROCEDURE REMOVE(job INTEGER)
  3231. IS
  3232. name varchar;
  3233. BEGIN
  3234. SELECT JOB_NAME INTO name FROM ALL_JOBS WHERE JOB_ID=job;
  3235. DBMS_SCHEDULER.DROP_JOB(name,TRUE);
  3236. END;
  3237. END SYSDBA.DBMS_JOB;
  3238. /
  3239. ----------SYNONYM DEFINE-------------
  3240. CREATE PUBLIC SYNONYM RECYCLEBIN FOR USER_RECYCLEBIN;
  3241. /
  3242. /** 使用时开启
  3243. CREATE OR REPLACE PACKAGE SYSDBA.DBMS_SESSION
  3244. IS
  3245. PROCEDURE SET_CONTEXT(context_name VARCHAR,attribute VARCHAR,value VARCHAR,username VARCHAR DEFAULT NULL,client_id VARCHAR DEFAULT NULL);
  3246. END SYSDBA.DBMS_SESSION;
  3247. ----包体
  3248. CREATE OR REPLACE PACKAGE BODY SYSDBA.DBMS_SESSION
  3249. IS
  3250. PROCEDURE SET_CONTEXT(context_name VARCHAR,attribute VARCHAR,value VARCHAR,username VARCHAR DEFAULT NULL,client_id VARCHAR DEFAULT NULL)
  3251. IS
  3252. LANGUAGE "C"
  3253. NAME "BLDIN_SET_CONTEXT";
  3254. END SYSDBA.DBMS_SESSION;
  3255. CREATE OR REPLACE PACKAGE SYSDBA.DBMS_RLS
  3256. IS
  3257. CONTEXT_SENSITIVE integer :=1;
  3258. PROCEDURE ADD_POLICY(
  3259. object_schema IN VARCHAR,
  3260. object_name IN VARCHAR,
  3261. policy_name IN VARCHAR,
  3262. function_schema IN VARCHAR,
  3263. policy_function IN VARCHAR,
  3264. statement_types IN VARCHAR,
  3265. update_check IN BOOLEAN DEFAULT FALSE,
  3266. enable IN BOOLEAN DEFAULT TRUE,
  3267. static_policy IN BOOLEAN DEFAULT FALSE,
  3268. policy_type IN BINARY_INTEGER DEFAULT NULL,
  3269. long_predicate IN BOOLEAN DEFAULT FALSE,
  3270. sec_relevant_cols IN VARCHAR2 DEFAULT NULL,
  3271. sec_relevant_cols_opt IN BINARY_INTEGER DEFAULT NULL);
  3272. PROCEDURE DROP_POLICY(
  3273. object_schema IN VARCHAR,
  3274. object_name IN VARCHAR,
  3275. policy_name IN VARCHAR);
  3276. END SYSDBA.DBMS_RLS;
  3277. ----包体
  3278. CREATE OR REPLACE PACKAGE BODY SYSDBA.DBMS_RLS
  3279. IS
  3280. PROCEDURE ADD_POLICY(
  3281. object_schema IN VARCHAR,
  3282. object_name IN VARCHAR,
  3283. policy_name IN VARCHAR,
  3284. function_schema IN VARCHAR,
  3285. policy_function IN VARCHAR,
  3286. statement_types IN VARCHAR,
  3287. update_check IN BOOLEAN DEFAULT FALSE,
  3288. enable IN BOOLEAN DEFAULT TRUE,
  3289. static_policy IN BOOLEAN DEFAULT FALSE,
  3290. policy_type IN BINARY_INTEGER DEFAULT NULL,
  3291. long_predicate IN BOOLEAN DEFAULT FALSE,
  3292. sec_relevant_cols IN VARCHAR2 DEFAULT NULL,
  3293. sec_relevant_cols_opt IN BINARY_INTEGER DEFAULT NULL)
  3294. IS
  3295. LANGUAGE "C"
  3296. NAME "BLDIN_ADD_POLICY";
  3297. PROCEDURE DROP_POLICY(
  3298. object_schema IN VARCHAR,
  3299. object_name IN VARCHAR,
  3300. policy_name IN VARCHAR)
  3301. IS
  3302. LANGUAGE "C"
  3303. NAME "BLDIN_DROP_POLICY";
  3304. END SYSDBA.DBMS_RLS;
  3305. **/