当前位置: 首页 > news >正文

Oracle 调用存储过程执行CRUD的小DEMO

-----------------------------修改(表名,主键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;

 

转载于:https://www.cnblogs.com/pangblog/p/3299397.html

相关文章:

  • webpack 项目实战
  • 做创业狼之前请看看这篇文章
  • json字符串转JSONObject和JSONArray以及取值
  • php计算时间差的方法
  • 前端路由实现-history
  • SQLServer 2008 删除、压缩日志
  • 【51nod1472】取余最大值
  • elasticsearch系列四:搜索详解(搜索API、Query DSL)
  • Oracle 安装报错 [INS-06101] IP address of localhost could not be determined 解决方法
  • OPENGL学习笔记整理(五):着色语言
  • Python3学习笔记16-错误和异常
  • 轻量级node-cache源码分析一波
  • 迭代器失效
  • OSChina 周六乱弹 —— 假如你被熊困到树上
  • 改变像素
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • 11111111
  • classpath对获取配置文件的影响
  • CSS魔法堂:Absolute Positioning就这个样
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • Leetcode 27 Remove Element
  • mysql常用命令汇总
  • Web标准制定过程
  • 开源SQL-on-Hadoop系统一览
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 设计模式(12)迭代器模式(讲解+应用)
  • 深度学习在携程攻略社区的应用
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • #define 用法
  • #图像处理
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (三)终结任务
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)mysql使用Navicat 导出和导入数据库
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .NET Core 和 .NET Framework 中的 MEF2
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .net对接阿里云CSB服务
  • .ui文件相关
  • @GlobalLock注解作用与原理解析
  • [ASP.NET 控件实作 Day7] 设定工具箱的控件图标
  • [BJDCTF2020]The mystery of ip
  • [CC2642R1][VSCODE+Embedded IDE+IAR Build+Cortex-Debug] TI CC2642R1基于VsCode的开发环境
  • [codevs] 1029 遍历问题
  • [Java][Liferay] File system in liferay
  • [JAVA设计模式]第二部分:创建模式
  • [LeetCode] 626. 换座位
  • [leetcode]_Symmetric Tree
  • [MySQL]数据库基础
  • [one_demo_2]使用正则表达式过滤字符串
  • [Pyhton]weakref 弱引用
  • [React源码解析] Fiber (二)
  • [svc]NFS存储企业场景及nfs最佳实战探究
  • [unity]切换天空盒
  • [大模型]大语言模型量化方法对比:GPTQ、GGUF、AWQ