写了一个package,可以自动生成"表的增删改的存储过程代码",要的留个email
1在写巡视相关存储过程时,写了一个存储过程,可以根据数据字典表dba_cons_columns(表列)和user_tab_columns(索引列)的关于某张表的列定义和索引定义,生成相应表增删除改的代码
<1>zqb_code_gen.genPackage('CUX_PATROL_PLAN');
可以根据传入的表名,自动生成带DO_INSERT,DO_UPDATE,DO_DELETE的方的package和pacakage body
<2>zqb_code_gen.genInsert('INSERT_PATROL_PLAN','CUX_PATROL_PLAN');
可以根据传入的的表名,生成指定名称的insert功能的存储过程;
<3>zqb_code_gen.genUpdate('UPDATE_PATROL_PLAN','CUX_PATROL_PLAN');
可以根据传入的的表名,生成指定名称的update功能的存储过程;
<4>zqb_code_gen.genDelete('DELETE_PATROL_PLAN','CUX_PATROL_PLAN');
可以根据传入的的表名,生成指定名称的delete功能的存储过程;
--------------------------------
调用过程:
1建立表
2建立索引,主键索引和联合主键索引需要PK_打头
3在表所在的相同表空间中 create or replace zqb_code_gen;
调用例子:
begin
zqb_code_gen.genPackage('CUX_PATROL_PLAN');
zqb_code_gen.genInsert('INSERT_PATROL_PLAN','CUX_PATROL_PLAN');
zqb_code_gen.genUpdate('UPDATE_PATROL_PLAN','CUX_PATROL_PLAN');
zqb_code_gen.genDelete('DELETE_PATROL_PLAN','CUX_PATROL_PLAN');
end;
-----------------------------------------
输出结果:
package CUX_PATROL_PLAN_PKG is
-- Author : zhangqiaobo ,yslzyhpt
-- Created : 2005-12-15 16:05:15
-- Purpose :
PROCEDURE DO_INSERT(
P_PATROL_ID NUMBER,
P_PATROL_NUMBER VARCHAR2,
P_DEPT_ID NUMBER,
P_PATROL_TYPE VARCHAR2,
P_LINE_NAMES VARCHAR2,
P_LINE_IDS VARCHAR2,
P_PLAN_START_TIME DATE,
P_PLAN_END_TIME DATE,
P_FUNCTIONARY_NAME VARCHAR2,
P_FUNCTIONARY_ID NUMBER,
P_SAFTY_GUARDIAN_NAME VARCHAR2,
P_SAFTY_GUARDIAN_ID NUMBER,
P_WORKUSER_NAMES VARCHAR2,
P_WORKUSER_IDS VARCHAR2,
P_WORK_SCOPE_NAMES VARCHAR2,
P_VEHICLES VARCHAR2,
P_REPORTER_ID NUMBER,
P_REPORT_TIME DATE,
P_FACT_START_TIME DATE,
P_FACT_END_TIME DATE,
P_PLAN_SIGNER_ID NUMBER,
P_PLAN_SIGN_TIME DATE,
P_WORK_RESULT VARCHAR2,
P_WORK_LEFT VARCHAR2,
P_FUNCTIONARY_SIGN NUMBER,
P_FUNCTIONARY_SIGN_TIME DATE,
P_TASK_STATE VARCHAR2,
P_ORGANIZATION_ID NUMBER,
P_LAST_UPDATE_LOGIN NUMBER,
P_CREATION_DATE DATE,
P_CREATED_BY NUMBER,
P_LAST_UPDATE_DATE DATE,
P_LAST_UPDATED_BY NUMBER
) ;
PROCEDURE DO_UPDATE(
P_PATROL_ID NUMBER,
P_PATROL_NUMBER VARCHAR2,
P_DEPT_ID NUMBER,
P_PATROL_TYPE VARCHAR2,
P_LINE_NAMES VARCHAR2,
P_LINE_IDS VARCHAR2,
P_PLAN_START_TIME DATE,
P_PLAN_END_TIME DATE,
P_FUNCTIONARY_NAME VARCHAR2,
P_FUNCTIONARY_ID NUMBER,
P_SAFTY_GUARDIAN_NAME VARCHAR2,
P_SAFTY_GUARDIAN_ID NUMBER,
P_WORKUSER_NAMES VARCHAR2,
P_WORKUSER_IDS VARCHAR2,
P_WORK_SCOPE_NAMES VARCHAR2,
P_VEHICLES VARCHAR2,
P_REPORTER_ID NUMBER,
P_REPORT_TIME DATE,
P_FACT_START_TIME DATE,
P_FACT_END_TIME DATE,
P_PLAN_SIGNER_ID NUMBER,
P_PLAN_SIGN_TIME DATE,
P_WORK_RESULT VARCHAR2,
P_WORK_LEFT VARCHAR2,
P_FUNCTIONARY_SIGN NUMBER,
P_FUNCTIONARY_SIGN_TIME DATE,
P_TASK_STATE VARCHAR2,
P_ORGANIZATION_ID NUMBER,
P_LAST_UPDATE_LOGIN NUMBER,
P_CREATION_DATE DATE,
P_CREATED_BY NUMBER,
P_LAST_UPDATE_DATE DATE,
P_LAST_UPDATED_BY NUMBER
) ;
PROCEDURE DO_DELETE(
P_PATROL_ID NUMBER
) ;
end CUX_PATROL_PLAN_PKG;
package body CUX_PATROL_PLAN_PKG is
-- Author : zhangqiaobo ,yslzyhpt
-- Created : 2005-12-15 16:05:15
-- Purpose :
PROCEDURE DO_INSERT(
P_PATROL_ID NUMBER,
P_PATROL_NUMBER VARCHAR2,
P_DEPT_ID NUMBER,
P_PATROL_TYPE VARCHAR2,
P_LINE_NAMES VARCHAR2,
P_LINE_IDS VARCHAR2,
P_PLAN_START_TIME DATE,
P_PLAN_END_TIME DATE,
P_FUNCTIONARY_NAME VARCHAR2,
P_FUNCTIONARY_ID NUMBER,
P_SAFTY_GUARDIAN_NAME VARCHAR2,
P_SAFTY_GUARDIAN_ID NUMBER,
P_WORKUSER_NAMES VARCHAR2,
P_WORKUSER_IDS VARCHAR2,
P_WORK_SCOPE_NAMES VARCHAR2,
P_VEHICLES VARCHAR2,
P_REPORTER_ID NUMBER,
P_REPORT_TIME DATE,
P_FACT_START_TIME DATE,
P_FACT_END_TIME DATE,
P_PLAN_SIGNER_ID NUMBER,
P_PLAN_SIGN_TIME DATE,
P_WORK_RESULT VARCHAR2,
P_WORK_LEFT VARCHAR2,
P_FUNCTIONARY_SIGN NUMBER,
P_FUNCTIONARY_SIGN_TIME DATE,
P_TASK_STATE VARCHAR2,
P_ORGANIZATION_ID NUMBER,
P_LAST_UPDATE_LOGIN NUMBER,
P_CREATION_DATE DATE,
P_CREATED_BY NUMBER,
P_LAST_UPDATE_DATE DATE,
P_LAST_UPDATED_BY NUMBER
) is
BEGIN
INSERT INTO CUX_PATROL_PLAN(
PATROL_ID,
PATROL_NUMBER,
DEPT_ID,
PATROL_TYPE,
LINE_NAMES,
LINE_IDS,
PLAN_START_TIME,
PLAN_END_TIME,
FUNCTIONARY_NAME,
FUNCTIONARY_ID,
SAFTY_GUARDIAN_NAME,
SAFTY_GUARDIAN_ID,
WORKUSER_NAMES,
WORKUSER_IDS,
WORK_SCOPE_NAMES,
VEHICLES,
REPORTER_ID,
REPORT_TIME,
FACT_START_TIME,
FACT_END_TIME,
PLAN_SIGNER_ID,
PLAN_SIGN_TIME,
WORK_RESULT,
WORK_LEFT,
FUNCTIONARY_SIGN,
FUNCTIONARY_SIGN_TIME,
TASK_STATE,
ORGANIZATION_ID,
LAST_UPDATE_LOGIN,
CREATION_DATE,
CREATED_BY,
LAST_UPDATE_DATE,
LAST_UPDATED_BY
) VALUES(
P_PATROL_ID,
P_PATROL_NUMBER,
P_DEPT_ID,
P_PATROL_TYPE,
P_LINE_NAMES,
P_LINE_IDS,
to_date(P_PLAN_START_TIME,'yyyy-mm-dd hh24:mi:ss'),
to_date(P_PLAN_END_TIME,'yyyy-mm-dd hh24:mi:ss'),
P_FUNCTIONARY_NAME,
P_FUNCTIONARY_ID,
P_SAFTY_GUARDIAN_NAME,
P_SAFTY_GUARDIAN_ID,
P_WORKUSER_NAMES,
P_WORKUSER_IDS,
P_WORK_SCOPE_NAMES,
P_VEHICLES,
P_REPORTER_ID,
to_date(P_REPORT_TIME,'yyyy-mm-dd hh24:mi:ss'),
to_date(P_FACT_START_TIME,'yyyy-mm-dd hh24:mi:ss'),
to_date(P_FACT_END_TIME,'yyyy-mm-dd hh24:mi:ss'),
P_PLAN_SIGNER_ID,
to_date(P_PLAN_SIGN_TIME,'yyyy-mm-dd hh24:mi:ss'),
P_WORK_RESULT,
P_WORK_LEFT,
P_FUNCTIONARY_SIGN,
to_date(P_FUNCTIONARY_SIGN_TIME,'yyyy-mm-dd hh24:mi:ss'),
P_TASK_STATE,
P_ORGANIZATION_ID,
P_LAST_UPDATE_LOGIN,
to_date(P_CREATION_DATE,'yyyy-mm-dd hh24:mi:ss'),
P_CREATED_BY,
to_date(P_LAST_UPDATE_DATE,'yyyy-mm-dd hh24:mi:ss'),
P_LAST_UPDATED_BY
);
COMMIT;
--异常处理:
EXCEPTION WHEN OTHERS THEN
rollback;
end DO_INSERT;
PROCEDURE DO_UPDATE(
P_PATROL_ID NUMBER,
P_PATROL_NUMBER VARCHAR2,
P_DEPT_ID NUMBER,
P_PATROL_TYPE VARCHAR2,
P_LINE_NAMES VARCHAR2,
P_LINE_IDS VARCHAR2,
P_PLAN_START_TIME DATE,
P_PLAN_END_TIME DATE,
P_FUNCTIONARY_NAME VARCHAR2,
P_FUNCTIONARY_ID NUMBER,
P_SAFTY_GUARDIAN_NAME VARCHAR2,
P_SAFTY_GUARDIAN_ID NUMBER,
P_WORKUSER_NAMES VARCHAR2,
P_WORKUSER_IDS VARCHAR2,
P_WORK_SCOPE_NAMES VARCHAR2,
P_VEHICLES VARCHAR2,
P_REPORTER_ID NUMBER,
P_REPORT_TIME DATE,
P_FACT_START_TIME DATE,
P_FACT_END_TIME DATE,
P_PLAN_SIGNER_ID NUMBER,
P_PLAN_SIGN_TIME DATE,
P_WORK_RESULT VARCHAR2,
P_WORK_LEFT VARCHAR2,
P_FUNCTIONARY_SIGN NUMBER,
P_FUNCTIONARY_SIGN_TIME DATE,
P_TASK_STATE VARCHAR2,
P_ORGANIZATION_ID NUMBER,
P_LAST_UPDATE_LOGIN NUMBER,
P_CREATION_DATE DATE,
P_CREATED_BY NUMBER,
P_LAST_UPDATE_DATE DATE,
P_LAST_UPDATED_BY NUMBER
) is
BEGIN
UPDATE CUX_PATROL_PLAN
SET
PATROL_ID = P_PATROL_ID,
PATROL_NUMBER = P_PATROL_NUMBER,
DEPT_ID = P_DEPT_ID,
PATROL_TYPE = P_PATROL_TYPE,
LINE_NAMES = P_LINE_NAMES,
LINE_IDS = P_LINE_IDS,
PLAN_START_TIME = to_date(P_PLAN_START_TIME,'yyyy-mm-dd hh24:mi:ss'),
PLAN_END_TIME = to_date(P_PLAN_END_TIME,'yyyy-mm-dd hh24:mi:ss'),
FUNCTIONARY_NAME = P_FUNCTIONARY_NAME,
FUNCTIONARY_ID = P_FUNCTIONARY_ID,
SAFTY_GUARDIAN_NAME = P_SAFTY_GUARDIAN_NAME,
SAFTY_GUARDIAN_ID = P_SAFTY_GUARDIAN_ID,
WORKUSER_NAMES = P_WORKUSER_NAMES,
WORKUSER_IDS = P_WORKUSER_IDS,
WORK_SCOPE_NAMES = P_WORK_SCOPE_NAMES,
VEHICLES = P_VEHICLES,
REPORTER_ID = P_REPORTER_ID,
REPORT_TIME = to_date(P_REPORT_TIME,'yyyy-mm-dd hh24:mi:ss'),
FACT_START_TIME = to_date(P_FACT_START_TIME,'yyyy-mm-dd hh24:mi:ss'),
FACT_END_TIME = to_date(P_FACT_END_TIME,'yyyy-mm-dd hh24:mi:ss'),
PLAN_SIGNER_ID = P_PLAN_SIGNER_ID,
PLAN_SIGN_TIME = to_date(P_PLAN_SIGN_TIME,'yyyy-mm-dd hh24:mi:ss'),
WORK_RESULT = P_WORK_RESULT,
WORK_LEFT = P_WORK_LEFT,
FUNCTIONARY_SIGN = P_FUNCTIONARY_SIGN,
FUNCTIONARY_SIGN_TIME = to_date(P_FUNCTIONARY_SIGN_TIME,'yyyy-mm-dd hh24:mi:ss'),
TASK_STATE = P_TASK_STATE,
ORGANIZATION_ID = P_ORGANIZATION_ID,
LAST_UPDATE_LOGIN = P_LAST_UPDATE_LOGIN,
CREATION_DATE = to_date(P_CREATION_DATE,'yyyy-mm-dd hh24:mi:ss'),
CREATED_BY = P_CREATED_BY,
LAST_UPDATE_DATE = to_date(P_LAST_UPDATE_DATE,'yyyy-mm-dd hh24:mi:ss'),
LAST_UPDATED_BY = P_LAST_UPDATED_BY
WHERE
PATROL_ID = P_PATROL_ID ;
COMMIT;
--异常处理:
EXCEPTION WHEN OTHERS THEN
rollback;
END DO_UPDATE;
PROCEDURE DO_DELETE(
P_PATROL_ID NUMBER
) is
BEGIN
delete CUX_PATROL_PLAN where
PATROL_ID = P_PATROL_ID ;
COMMIT;
--异常处理:
EXCEPTION WHEN OTHERS THEN
rollback;
END DO_DELETE;
end CUX_PATROL_PLAN_PKG;
- 好久没来了。共享一个自动生成编号的存储过程
- 自动生成对一个数据表的插入和更新的存储过程
- 一个自动生成预制SQL 的存储过程(一)
- 分享一个自动生成单据的存储过程
- 一个自动生成预制SQL 的存储过程(二)
- 根据表名,自动生成增、删、改参数化存储过程和调用代码
- 【代码生成】针对单表生成CRUD的存储过程
- 一个可以返回前一页并自动刷新页面的ASP代码.
- 存储过程实例2:通过把group by 放入循环,对生成的主键可以进行其他处理
- mysql 让一个存储过程定时作业的代码(转)
- 使用CodeSmith为一个ORACLE中的表生成存储过程失败
- 自动生成INSERT语句的SQL存储过程
- 自动为指定表的指定字段生成编号的存储过程
- sql生成(查询数据的存储过程)代码的存储过程
- [原创]一个考试系统中的存储过程用来生成试卷用的
- 写了一个针对一个的所有表进行的存储过程!可以方便的清空数据库!
- 将表中的数据自动生成INSERT语句的存储过程,自己收藏一下
- 最近设计了一个生成asp代码的程序,同时也可以作为数据库管理查询的软件,有兴趣的朋友可以去下载!
- 可以自定义导出数据库的表结构(视图)的一个存储过程
- 发布一个高效的数据分页的存储过程 可以轻松应付百万数据