生成一段连续的数字
产生一段连续的日期:SELECT TO_DATE('20080101', 'YYYYMMDD') + ID - 1FROM (SELECT ROWNUM ID FROM ALL_OBJECTS)WHERE ID <= 366需要用到一段连续的数字,通常可用SELECT ROWNUM ID FROM ALL_OBJECTS来生成。-- 创建类型TP_NUM,准备用来存储返回值CREATE OR REPLACE TYPE TP_NUM IS TABLE OF NUMBER;-- 生成P_MIN(最小值)至P_MAX(最大值)之间的连续的数-- 测试用例:SELECT * FROM TABLE(F_GET_SEQ(1, 10))CREATE OR REPLACE FUNCTION F_GET_SEQ(P_MIN IN NUMBER, P_MAX IN NUMBER)RETURN TP_NUM ISO_NUM TP_NUM := TP_NUM();V_
根据指定分隔符拆分字符串
在10G中可用正则表达式实现,但9I并不支持。9i---------------------------------------------------------------------------------------select substr('11,22,3377,99', pos, len)From (select nvl(lag(position) over(order by rownum) + 1, 1) pos,position - nvl(lag(position) over(order by rownum) + 1, 1) lenfrom (select decode(instr('11,22,3377,99', ',', 1, rownum),0,length('11,22,3377,99') + 1,instr('11,22,3377,99', ',', 1, rownum)) positionfrom dualconnect by rownum <=length('11,22,3377,99') -length(re
代码表更新
/*代码表更新用途:更新以"DM_HF_"开头的代码表(可选全部更新或指定表更新)编制日期:2009-03-12测试用例:传入参数P_OPTION:1、若要全部更新,传入值可为:'ALL', 'all', 'All',例如:EXEC SP_UPDATE_DM_HF(ALL);2、若只要单表更新,传入该表名,例如:EXEC SP_UPDATE_DM_HF(DM_HF_DWB);3、若要多表更新,传入各表名,并以','隔开,例如:EXEC SP_UPDATE_DM_HF('DM_HF_BJLBB,DM_HF_BJLXB,DM_HF_BJXLB');*/CREATE OR REPLACE PROCEDURE SP_UPDATE_DM_HF(P_OPTION IN VARCHAR2 -- 更新表选项,详细说明见上面的测试用例) ASV_
record & pl/sql表
练习record & pl/sql表的使用,所谓的数据抽取只是用来测试结果的正确与否。create or replace procedure sp_test_hzy is-- 使用record和pl/sql表实现数据抽取-- record_type用于获取每一行记录type record_type is record(r_SJLYSS t_dmzh_dygx.SJLYSS%type,r_LYB_COL_NAME t_dmzh_dygx.LYB_COL_NAME%type,r_LYB_COL_VALUE t_dmzh_dygx.LYB_COL_VALUE%type,r_LYB_COL_VALUE_CN t_dmzh_dygx.LYB_COL_VALUE_CN%type,r_BZB t_dmzh_dygx.BZB%type,r_BZB_COL_VALUE t_dmzh_dygx.BZB_COL_VALUE%type,r_BZB_COL_VALUE_CN t_dmzh_dygx.BZB_CO