热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

数据库技术:oracle存储过程动态sql语句实例讲解

注意事项:在字符串中‘’代表一个‘。例:’select””,afro

注意事项:

在字符串中 ‘’ 代表一个 。例:’select ” ” ,a from table’ 中

需要了解更多数据库技术:oracle存储过程动态sql语句实例讲解,都可以关注数据库技术分享栏目—编程笔记

  create or replace   procedure sp_lisgetoutpfee (  card_type in varchar2,  card_no in varchar2,  start_date in varchar2,  end_date in varchar2,  is_vaild in varchar2,  hospitalcode  out varchar2,  pat_type  out varchar2,  pat_no  out varchar2,  pat_id  out varchar2,  pat_cardno  out varchar2,  inp_id  out varchar2,  inp_date  out varchar2,  pat_name  out varchar2,  pat_sex  out varchar2,  pat_birth  out varchar2,  pat_diag  out varchar2,  charge_typeno  out varchar2,  req_wardno  out varchar2,  req_bedno  out varchar2,  req_comm  out varchar2,  req_deptno  out varchar2,  req_docno  out varchar2,  req_dt  out varchar2,  emer_flag  out varchar2,  original_reqno  out varchar2,  perform_dept  out varchar2,  req_groupna  out varchar2,  specimen_name  out varchar2,  sample_detail  out varchar2,  req_reason  out varchar2,  sample_items  out varchar2,  charge_flag  out varchar2,  charge_user  out varchar2,  charge_dt  out varchar2,  secrecy  out varchar2,  other_stat  out varchar2,  abo_bldtype  out varchar2,  rh_bldtype  out varchar2,  pat_diag_icd  out varchar2,  pat_address  out varchar2,  pat_nation  out varchar2,  pat_idcardno  out varchar2,  pat_phone  out varchar2,  pat_height  out varchar2,  weight  out varchar2,  his_itemcode  out varchar2,  req_itemcode  out varchar2,  req_itemname  out varchar2,  combitemna  out varchar2,  base_price  out varchar2,  item_price  out varchar2,  qty  out varchar2,  amount  out varchar2,  his_recordid  out varchar2,  his_refcol1  out varchar2,  his_refcol2  out varchar2,  his_refcol3  out varchar2  )as    sql_string varchar2(2000);  sqlr_result varchar2(2000);  -- **在字符串中 ‘’代表一个‘ 。例:'select '' '' ,a from table’ 中 ''中 的'' ''代表一个空格,即''代表一个'**  begin  sql_string:=    ' select   '' '',  '' '',  n."clinic_patient_id",  n."patient_id",  n."treatment_card_no",  '' '',  n."operate_time",  c."patient_name",  c."patient_sex",  p."birthday",  n."diagnosis",  '' '',  '' '',  '' '',  '' '',  n."treatment_office_id",  n."doctor_id",  to_char(n."operate_time",''yyyy-mm-dd'') operate_time,  '' '',  '' '',  n."exec_dept_id",  n."system_type",  '' '',  '' '',  '' '',  '' '',  n."status",  f."balance_operator",  to_char(f."balance_time",''yyyy-mm-dd'') balance_time,  '' '',  '' '',  '' '',  '' '',  '' '',  p."address",  p."nationality",  p."idcard_no",  p."mobile",  '' '',  '' '',  n."item_no",  '' '',  n."item_name",  '' '',  n."unit_price",  n."unit_price",  n."item_quantity",  n."total_price",  n."id",  '' '',  '' '',  '' ''   from   "his_clinic_doctor_rx_others"  n left join "his_clinic_doctor_rx_info" c on n. "prescription_no" = c."prescription_no"   left join "his_clinic_patient_info" p on p."patient_id" = n."patient_id"   left join "his_clinic_charge_info" f on n."patient_id" = f."patient_id"';    if card_type is null and is_vaild is null then  sqlr_result:=sql_string ||'  where n."treatment_card_no" = '''||card_no||'''   and n."system_type" = 9  and (to_char(n."operate_time", ''yyyy-mm-dd'') between '''||start_date||'''and '''||end_date||''')';    elsif card_type is not null and is_vaild is null then   sqlr_result:= sql_string ||'  where n."treatment_card_no" = '''||card_no||'''   and n."system_type" = 9  and (to_char(n."operate_time", ''yyyy-mm-dd'') between '''||start_date||'''and '''||end_date||''')  and  p."id_categ_code" = '||card_type||''; ***--而在这里''代表一个空格***      ----------      ----------      elsif card_type is null and is_vaild is not null then  sqlr_result:= sql_string ||'  where n."treatment_card_no" = '''||card_no||'''   and n."system_type" = 9  and (to_char(n."operate_time", ''yyyy-mm-dd'') between '''||start_date||'''and '''||end_date||''')  and p."is_valid"='||is_vaild||'';  elsif card_type is not null and is_vaild is not null then  sqlr_result:= sql_string ||'  where n."treatment_card_no" = '''||card_no||'''  and n."system_type" = 9   and (to_char(n."operate_time", ''yyyy-mm-dd'') between '''||start_date||''' and '''||end_date||''')  and p."is_valid"='||is_vaild||'   and p."id_categ_code" ='||card_type||'';  end if;  begin  dbms_output.put_line(sqlr_result);  -- 输出sqlr_result中的sql的语句  execute immediate sqlr_result into  hospitalcode, -- 执行sqlr_result 中的sql 语句 并把值into给下面的字段  pat_type,  pat_no,  pat_id,  pat_cardno,  inp_id,  inp_date,  pat_name,  pat_sex,  pat_birth,  pat_diag,  charge_typeno,  req_wardno,  req_bedno,  req_comm,  req_deptno,  req_docno,  req_dt,  emer_flag,  original_reqno,  perform_dept,  req_groupna,  specimen_name,  sample_detail,  req_reason,  sample_items,  charge_flag,  charge_user,  charge_dt,  secrecy,  other_stat,  abo_bldtype,  rh_bldtype,  pat_diag_icd,  pat_address,  pat_nation,  pat_idcardno,  pat_phone,  pat_height,  weight,  his_itemcode,  req_itemcode,  req_itemname,  combitemna,  base_price,  item_price,  qty,  amount,  his_recordid,  his_refcol1,  his_refcol2,  his_refcol3;  exception when no_data_found then dbms_output.put_line('no date found');--抛出no_data_found异常打印dbms  end;  end;  

推荐阅读
  • 本文由编程笔记#小编整理,主要介绍了关于数论相关的知识,包括数论的算法和百度百科的链接。文章还介绍了欧几里得算法、辗转相除法、gcd、lcm和扩展欧几里得算法的使用方法。此外,文章还提到了数论在求解不定方程、模线性方程和乘法逆元方面的应用。摘要长度:184字。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 本文介绍了Oracle存储过程的基本语法和写法示例,同时还介绍了已命名的系统异常的产生原因。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
author-avatar
周郎某某某
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有