-----------------------------修改(表名,主键ID,要修改的列)

create or replace procedure pro_code_edit(p_tbname in varchar2,p_ct_id in varchar2,p_codename in varchar2) as
   p_str varchar2(400);
begin
  p_str := 'update '||p_tbname||' set codename = '''||p_codeName||''' where ct_id = '''||p_ct_id||'''';
  execute immediate p_str;
end;

--查询所有记录,直接返回游标 在调用处做下一步处理

create or replace procedure pro_code_queryall(p_tbname in varchar2,p_list out sys_refcursor ) as
begin
    open p_list for 'select * from '||p_tbname||'';
end;

--查询单条记录(表名,主键,要查询的字段)

create or replace procedure pro_code_queryone(p_tbname in varchar2,p_ct_id in varchar2,
                 p_code out varchar2,p_codename out varchar2,p_fathercode out varchar2) as
     v_code varchar2(40);
     v_codename varchar2(40);
     v_fathercode varchar2(40);
     v_str varchar2(400);
begin
     v_str:='select code,codename,fathercode  from '||p_tbname||' where ct_id = :p' ;
     execute immediate v_str into v_code,v_codename,v_fathercode  using p_ct_id ;
     p_code:=v_code;
     p_codename:=v_codename;
    p_fathercode:=v_fathercode;
end;

--删除记录(表名,主键值)

--这里的主键名称是通过命令查询出来的

create or replace procedure pro_code_remove(p_tbname in varchar2,p_ct_id in varchar2) as
    v_str varchar2(400);
    v_con_name varchar2(40);
    v_pid varchar2(40):=trim(p_ct_id);
    v_pk_column_name varchar2(40);
    v_tbname varchar2(400):=upper(trim(p_tbname));
begin
    select constraint_name into v_con_name from all_constraints where owner=upper('daily') and constraint_type = 'P'
    and table_name=v_tbname;
    select column_name into v_pk_column_name from all_cons_columns where owner=upper('daily') and table_name=v_tbname
    and constraint_name = v_con_name;
   v_str :='delete  from doorkind where '||v_pk_column_name||' = :p ';
   execute immediate v_str using v_pid;
end;

--保存记录(在这里由于数据设计的特殊之处,主键是按照规则自动生成的)

create or replace procedure pro_code_save(p_tbname in varchar2,p_codename in varchar2) as
     v_codetype varchar2(100);
     p_id varchar2(400);
     p_str varchar2(400);
     v_len number(10);
     v_left varchar2(100);
     v_right varchar2(100);
begin
     v_codetype:=p_tbname;
     p_str:='select max(ct_id) from '||v_codetype;
     execute immediate p_str into p_id;
     dbms_output.put_line(p_id);
     select codetype,codelength into v_codetype,v_len from codenavigation where upper(codetype) = upper(v_codetype);

if p_id is not null then
        v_left := regexp_substr(p_id,'[A-Za-z]+',1,1);
       v_right := regexp_substr(p_id,'[0-9]+',1,1);
       v_right := lpad(v_right + 1,v_len,'0');
     else
       v_left:=v_codetype;
       v_right := lpad(1,v_len,'0');
     end if;
       p_id:=v_left||v_right;
       dbms_output.put_line(p_id);

p_str:='insert into '||v_codetype||'  '||' values('''||p_id||''','''||v_right||''','''||p_codeName||''','''||v_left||''')';
     
     execute immediate p_str;
     dbms_output.put_line(p_str);
end;

Oracle 调用存储过程执行CRUD的小DEMO的更多相关文章

  1. 【转】SQL2008 链接Oracle 调用存储过程

    1. SQL链接ORACLE 都是可视化的操作 如下图: 红色框选的是oracle的数据驱动,如果没有这个驱动 那需要单独安装oracle的client端 装完以后就有了. 2.在创建之前,在SQLS ...

  2. myabatis oracle 调用存储过程返回list结果集

    Mapper.xml 配置 <resultMap type="emp" id="empMap"> <id property="emp ...

  3. hibernate的update() 更新延迟或者无法更新,导致同个service调用存储过程执行方法不精确

    hibernate的update()方法无法更新,不报错 原因是hibernate的update方法操作的是缓存,可以flush下先. 设置缓存为false理论上也可. 在一个serivce方法里,执 ...

  4. sql server service broker中调用存储过程执行跨库操作,不管怎么设置都一直提示 服务器主体 "sa" 无法在当前安全上下文下访问数据库 "dbname"。

    用sql server自带的消息队列service borker,调用存储过程中,执行了一个跨库的操作,先是用了一个用户,权限什么都给够了,但是一直提示 服务器主体 "user" ...

  5. [转]Oracle 调用存储过程并显示结果集 Oracle.DataAccess.Client OracleDbType.RefCursor

    本文转自:http://liye9801.blog.163.com/blog/static/6019703200901244448950/ 今天学习了一个Oracle中的存储过程,一开始便被如果返回结 ...

  6. C#调用存储过程执行缓慢,但在数据库中执行却很快的问题

    参考: http://www.debugease.com/mssqlbasic/976568.html https://www.cnblogs.com/Irving/p/3951220.html ht ...

  7. oracle调用存储过程和函数返回结果集

    在程序开发中,常用到返回结果集的存储过程,这个在mysql和sql server 里比较好处理,直接返回查询结果就可以了,但在oracle里面 要 out 出去,就多了一个步骤,对于不熟悉的兄弟们还得 ...

  8. 【Java EE 学习 29 下】【JDBC编程中操作Oracle数据库】【调用存储过程的方法】

    疑问:怎样判断存储过程执行之后返回值是否为空. 一.连接oracle数据库 1.需要的jar包:在安装的oracle中就有,所以不需要到官网下载,我的oracle11g下:D:\app\kdyzm\p ...

  9. Java代码调用存储过程和存储方法

    准备一个oracle 的JDBC jar 包:ojdbc14_11g.jar 首先找到你的 oracle 安装位置,例如: 1.创建一个JDBC数据库连接工具类: package com.test.d ...

随机推荐

  1. jquery实现ajax提交form表单的方法总结

    本篇文章主要是对jquery实现ajax提交form表单的方法进行了总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助 方法一:  function AddHandlingFeeToRefund( ...

  2. MPMoviePlayerController导致statusBar消失,导致内存泄露leak

    1.MPMoviePlayerController使statusBar消失 同事写项目时,运行程序总导致statusBar状态条消失,然后就是界面会上移20个像素,导致最下面空白界面,找原因一直不知道 ...

  3. 高焕堂《android从程序员到架构师之路》 YY讲坛直面大师学习架构设计

    <android从程序员到架构师之路>YY讲坛活动:  sundy携手高焕堂老师全程YY答疑 与大师一起,分享android技术 时间:7月21日下午2:00   报名联系QQ:22243 ...

  4. HBase概念学习(七)HBase与Mapreduce集成

    这篇文章是看了HBase权威指南之后,依据上面的解说搬下来的样例,可是略微有些不一样. HBase与mapreduce的集成无非就是mapreduce作业以HBase表作为输入,或者作为输出,也或者作 ...

  5. 参考storm中的RotatingMap实现key超时处理

    storm0.8.1以后的RotatingMap完全可以独立于storm用来实现hashmap的key超时删除,并调用回调函数 RotatingMap.java: import java.util.H ...

  6. jquery mobile自己定义webapp开发实例(一)——前言篇

    用jquery mobile做了一段时间的webapp开发,准备用自己的一个小demo做一个模块化的分享 点击demo演示 手机演示二维码: 此demo已经是比較老的版本号,用户体验流畅度确实还存在非 ...

  7. STM32学习之路-LCD(3)&lt;显示图片&gt;

    祝大家端午和六一快乐!原本今天是想歇息歇息的,可是实在无奈没什么事干.所以就来学习学习LCD显示图片的函数 函数是照搬奋斗的样例,算是些笔记吧.只是奋斗的样例凝视的不是非常具体.今天去看了正点原子的论 ...

  8. java常用内存设置

    Java虚拟机具有一个堆,是运行时的数据区域,所有类实例和数组内存均从此处分配.堆是在java虚拟机启动时创建的. 堆是留给开发人员用的内存区域.非堆就是JVM留给自己用的(方法区,JVM内部处理或优 ...

  9. KaOS 2016.04 发布,桌面 Linux 发行版

    KaOS 2016.04 发布了,KaOS是一份桌面Linux发行,其特色在于最新版本的KDE桌面环境及其他流行的使用Qt工具包的软件程序.它最初基于Arch Linux,但从2013年四月起,开发者 ...

  10. Qt入门-字符串类QString

    原地址:http://blog.csdn.net/xgbing/article/details/7770854 QString是Unicode字符的集合,它是Qt API中使用的字符串类. QStri ...