摘要:最近项目中用到了Oracle存储过程,所以就自己尝试着写了下,下面我把我遇到的问题描述一下:就是在我处理解析Clob字段中的xml字符串的时候,有个需求就是根据指定的主键参数,来判断该参数的值是否已经存在数据表里面,如果存在我就根据这个参数执行Update操作,如果不存在我就执行Save操作:

一:Oracle存储过程中如何根据指定的参数判断该参数的值否存在数据表中,以及通过Oracle存储过程解析Clob字段中的xml字符串到指定的数据表里面:

二:下面是具体的方法,主要是红色部分,是解决如果根据指定的参数判断该参数的值是否已经存在的数据表中:

CREATE OR REPLACE PROCEDURE MIP.MIP_PARSE (xmlStr IN CLOB)
ISRENO     VARCHAR2 (100);AIRLINE  VARCHAR2 (100);FFID     VARCHAR2 (100);FFID_A   VARCHAR2 (100);FFID_D   VARCHAR2 (100);ABNS     VARCHAR2 (100);ACFT     VARCHAR2 (100);CHDT     VARCHAR2 (100);EIBT     VARCHAR2 (100);FATA     VARCHAR2 (100);FETA     VARCHAR2 (100);FSTA     VARCHAR2 (100);LMDT     VARCHAR2 (100);LMUR     VARCHAR2 (100);PSTM     VARCHAR2 (100);RWAY     VARCHAR2 (100);SPOT     VARCHAR2 (100);STND     VARCHAR2 (100);A_TOBT   VARCHAR2 (100);A_WEATHER     VARCHAR2 (100);ASAT     VARCHAR2 (100);BCTM     VARCHAR2 (100);BOTM     VARCHAR2 (100);BSTM     VARCHAR2 (100);C_TOBT   VARCHAR2 (100);COBT     VARCHAR2 (100);CTOT     VARCHAR2 (100);DINT     VARCHAR2 (100);DLAB     VARCHAR2 (100);DOUT     VARCHAR2 (100);EDDI     VARCHAR2 (100);EOBT     VARCHAR2 (100);EPGT     VARCHAR2 (100);EPOT     VARCHAR2 (100);FATD     VARCHAR2 (100);FSTD     VARCHAR2 (100);OFTM     VARCHAR2 (100);STDI     VARCHAR2 (100);TSAT     VARCHAR2 (100);--新增字段FLIGHTNUMBER VARCHAR2 (100);FLIGHTMARK   VARCHAR2 (100);--定义出港信息表要格式的时间字段A_TOBT_D VARCHAR2 (100);ASAT_D   VARCHAR2 (100);BCTM_D   VARCHAR2 (100);BOTM_D   VARCHAR2 (100);BSTM_D   VARCHAR2 (100);C_TOBT_D VARCHAR2 (100);COBT_D   VARCHAR2 (100);CTOT_D   VARCHAR2 (100);DINT_D   VARCHAR2 (100);DOUT_D   VARCHAR2 (100);EDDI_D   VARCHAR2 (100);EOBT_D   VARCHAR2 (100);EPGT_D   VARCHAR2 (100);EPOT_D   VARCHAR2 (100);FATD_D   VARCHAR2 (100);FSTD_D   VARCHAR2 (100);LMDT_D   VARCHAR2 (100);OFTM_D   VARCHAR2 (100);STDI_D   VARCHAR2 (100);TSAT_D   VARCHAR2 (100);--定义进港信息表要格式化的时间字段EIBT_A   VARCHAR2 (100);FATA_A   VARCHAR2 (100);FETA_A   VARCHAR2 (100);FSTA_A   VARCHAR2 (100);LMDT_A   VARCHAR2 (100);PSTM_A   VARCHAR2 (100);SPOT_A   VARCHAR2 (100);COUNTS   NUMBER(36);--出港信息要修改的除时间外的字段STND_D   VARCHAR2 (100);A_WEATHER_D VARCHAR2 (100);ABNS_D   VARCHAR2 (100);ACFT_D   VARCHAR2 (100);AIRLINE_D VARCHAR2 (100);DLAB_D   VARCHAR2 (100);LMUR_D   VARCHAR2 (100);RENO_D   VARCHAR2 (100);RWAY_D   VARCHAR2 (100);-- 进港信息要修改的除时间外的字段ABNS_A   VARCHAR2 (100);ACFT_A   VARCHAR2 (100);AIRLINE_A VARCHAR2 (100);CHDT_A   VARCHAR2 (100);RENO_A   VARCHAR2 (100);LMUR_A   VARCHAR2 (100);RWAY_A   VARCHAR2 (100);STND_A   VARCHAR2 (100);BEGINRENO := GetXmlNodeValue (xmlStr, 'RENO');AIRLINE := GetXmlNodeValue (xmlStr, 'AIRLINE');FFID := GetXmlNodeValue (xmlStr, 'FFID');ABNS := GetXmlNodeValue (xmlStr, 'ABNS');ACFT := GetXmlNodeValue (xmlStr, 'ACFT');CHDT := GetXmlNodeValue (xmlStr, 'CHDT');EIBT := GetXmlNodeValue (xmlStr, 'EIBT');FATA := GetXmlNodeValue (xmlStr, 'FATA');FETA := GetXmlNodeValue (xmlStr, 'FETA');FFID := GetXmlNodeValue (xmlStr, 'FFID');FSTA := GetXmlNodeValue (xmlStr, 'FSTA');LMDT := GetXmlNodeValue (xmlStr, 'LMDT');LMUR := GetXmlNodeValue (xmlStr, 'LMUR');PSTM := GetXmlNodeValue (xmlStr, 'PSTM');RWAY := GetXmlNodeValue (xmlStr, 'RWAY');SPOT := GetXmlNodeValue (xmlStr, 'SPOT');STND := GetXmlNodeValue (xmlStr, 'STND');A_TOBT := GetXmlNodeValue (xmlStr, 'A_TOBT');A_WEATHER := GetXmlNodeValue (xmlStr, 'A_WEATHER');ASAT := GetXmlNodeValue (xmlStr, 'ASAT');BCTM := GetXmlNodeValue (xmlStr, 'BCTM');BOTM := GetXmlNodeValue (xmlStr, 'BOTM');BSTM := GetXmlNodeValue (xmlStr, 'BSTM');C_TOBT := GetXmlNodeValue (xmlStr, 'C_TOBT');COBT := GetXmlNodeValue (xmlStr, 'COBT');CTOT := GetXmlNodeValue (xmlStr, 'CTOT');DINT := GetXmlNodeValue (xmlStr, 'DINT');DLAB := GetXmlNodeValue (xmlStr, 'DLAB');DOUT := GetXmlNodeValue (xmlStr, 'DOUT');EDDI := GetXmlNodeValue (xmlStr, 'EDDI');EOBT := GetXmlNodeValue (xmlStr, 'EOBT');EPGT := GetXmlNodeValue (xmlStr, 'EPGT');EPOT := GetXmlNodeValue (xmlStr, 'EPOT');FATD := GetXmlNodeValue (xmlStr, 'FATD');FSTD := GetXmlNodeValue (xmlStr, 'FSTD');OFTM := GetXmlNodeValue (xmlStr, 'OFTM');STDI := GetXmlNodeValue (xmlStr, 'STDI');TSAT := GetXmlNodeValue (xmlStr, 'TSAT');--出港信息表中时间字段的时间格式函数的用法A_TOBT_D := FORMATDATEVALUE (A_TOBT, 'A_TOBT_D');ASAT_D := FORMATDATEVALUE (ASAT, 'ASAT_D');BCTM_D := FORMATDATEVALUE (BCTM, 'BCTM_D');BOTM_D := FORMATDATEVALUE (BOTM, 'BOTM_D');BSTM_D := FORMATDATEVALUE (BSTM, 'BSTM_D');C_TOBT_D := FORMATDATEVALUE (C_TOBT, 'C_TOBT_D');COBT_D := FORMATDATEVALUE (COBT, 'COBT_D');CTOT_D := FORMATDATEVALUE (CTOT, 'CTOT_D');DINT_D := FORMATDATEVALUE (DINT, 'DINT_D');DOUT_D := FORMATDATEVALUE (DOUT, 'DOUT_D');EDDI_D := FORMATDATEVALUE (EDDI, 'EDDI_D');EOBT_D := FORMATDATEVALUE (EOBT, 'EOBT_D');EPGT_D := FORMATDATEVALUE (EPGT, 'EPGT_D');EPOT_D := FORMATDATEVALUE (EPOT, 'EPOT_D');FATD_D := FORMATDATEVALUE (FATD, 'FATD_D');FSTD_D := FORMATDATEVALUE (FSTD, 'FSTD_D');LMDT_D := FORMATDATEVALUE (LMDT, 'LMDT_D');OFTM_D := FORMATDATEVALUE (OFTM, 'OFTM_D');STDI_D := FORMATDATEVALUE (STDI, 'STDI_D');TSAT_D := FORMATDATEVALUE (TSAT, 'TSAT_D');--进港信息表中时间字段的时间格式函数的用法EIBT_A := FORMATDATEVALUE (EIBT, 'EIBT_A');FATA_A := FORMATDATEVALUE (FATA, 'FATA_A');FETA_A := FORMATDATEVALUE (FETA, 'FETA_A');FSTA_A := FORMATDATEVALUE (FSTA, 'FSTA_A');LMDT_A := FORMATDATEVALUE (LMDT, 'LMDT_A');PSTM_A := FORMATDATEVALUE (PSTM, 'PSTM_A');SPOT_A := FORMATDATEVALUE (SPOT, 'SPOT_A');--出港信息要修改的除时间外的字段STND_D := GetXmlNodeValue (xmlStr, 'STND');A_WEATHER_D := GetXmlNodeValue (xmlStr, 'A_WEATHER');ABNS_D := GetXmlNodeValue (xmlStr, 'ABNS');ACFT_D := GetXmlNodeValue (xmlStr, 'ACFT');AIRLINE_D := GetXmlNodeValue (xmlStr, 'AIRLINE');DLAB_D := GetXmlNodeValue (xmlStr, 'DLAB');LMUR_D := GetXmlNodeValue (xmlStr, 'LMUR');RENO_D := GetXmlNodeValue (xmlStr, 'RENO');RWAY_D := GetXmlNodeValue (xmlStr, 'RWAY');--进港信息要修改的除时间外的字段ABNS_A := GetXmlNodeValue (xmlStr, 'ABNS');ACFT_A := GetXmlNodeValue (xmlStr, 'ACFT');AIRLINE_A := GetXmlNodeValue (xmlStr, 'AIRLINE');CHDT_A := GetXmlNodeValue (xmlStr, 'CHDT');RENO_A := GetXmlNodeValue (xmlStr, 'RENO');LMUR_A := GetXmlNodeValue (xmlStr, 'LMUR');RWAY_A := GetXmlNodeValue (xmlStr, 'RWAY');STND_A := GetXmlNodeValue (xmlStr, 'STND');IF INSTR(FFID,'-D-') > 0 THENFFID_D := FFID;--截取航班号FLIGHTNUMBER := SUBSTR(FFID_D,INSTR(FFID_D,'-',1)+1,INSTR(FFID_D,'-',INSTR(FFID_D,'-',1)+1)-INSTR(FFID_D,'-',1)-1);--截取出港标志FLIGHTMARK := SUBSTR(FFID_D,INSTR(FFID_D,'-',2,2)+1,INSTR(FFID_D,'-',2,3)-1-INSTR(FFID_D,'-',2,2));--UPDATE之前要先根据FFID查询一下看看数据表中是否已经存在该条数据,如果存在就UPDATE,如果不存在就SAVE<span style="color:#cc0000;">SELECT COUNT(1) INTO COUNTS FROM TB_CMS_FLGTINFO_D where FFID = FFID_D;IF COUNTS > 0 THEN </span>UPDATE TB_CMS_FLGTINFO_DSET A_TOBT = A_TOBT_D,A_WEATHER = A_WEATHER_D,ABNS = ABNS_D,ACFT = ACFT_D,AIRLINE = AIRLINE_D,ASAT = ASAT_D,BCTM = BCTM_D,BOTM = BOTM_D,BSTM = BSTM_D,C_TOBT = C_TOBT_D,COBT = COBT_D,CTOT = CTOT_D,DINT = DINT_D,DLAB = DLAB_D,DOUT = DOUT_D,EDDI = EDDI_D,EOBT = EOBT_D,EPGT = EPGT_D,EPOT = EPOT_D,FATD = FATD_D,FSTD = FSTD_D,LMDT = LMDT_D,LMUR = LMUR_D,OFTM = OFTM_D,RENO = RENO_D,RWAY = RWAY_D,STDI = STDI_D,STND = STND_D,TSAT = TSAT_DWHERE FFID = FFID_D;ELSEINSERT INTO TB_CMS_FLGTINFO_D (ID,A_TOBT,A_WEATHER,ABNS,ACFT,AIRLINE,ASAT,BCTM,BOTM,BSTM,C_TOBT,COBT,CTOT,DINT,DLAB,DOUT,EDDI,EOBT,EPGT,EPOT,FATD,FFID,FLIGHTNUMBER,FLIGHTMARK,FSTD,LMDT,LMUR,OFTM,RENO,RWAY,STDI,STND,TSAT)VALUES   (FLGTINFO_D_SEQ.NEXTVAL,A_TOBT_D,A_WEATHER,ABNS,ACFT,AIRLINE,ASAT_D,BCTM_D,BOTM_D,BSTM_D,C_TOBT_D,COBT_D,CTOT_D,DINT_D,DLAB,DOUT_D,EDDI_D,EOBT_D,EPGT_D,EPOT_D,FATD_D,FFID_D,FLIGHTNUMBER,FLIGHTMARK,FSTD_D,LMDT_D,LMUR,OFTM_D,RENO,RWAY,STDI_D,STND,TSAT_D);END IF;ELSEFFID_A := FFID;--截取航班号FLIGHTNUMBER := SUBSTR(FFID_A,INSTR(FFID_A,'-',1)+1,INSTR(FFID_A,'-',INSTR(FFID_A,'-',1)+1)-INSTR(FFID_A,'-',1)-1);--截取出港标志FLIGHTMARK := SUBSTR(FFID_A,INSTR(FFID_A,'-',2,2)+1,INSTR(FFID_A,'-',2,3)-1-INSTR(FFID_A,'-',2,2));--UPDATE之前要先根据FFID查询一下看看数据表中是否已经存在该条数据,如果存在就UPDATE,如果不存在就SAVE<span style="color:#cc0000;">SELECT COUNT(1) INTO COUNTS FROM TB_CMS_FLGTINFO_A where FFID = FFID_A;IF COUNTS > 0 THEN</span>UPDATE TB_CMS_FLGTINFO_ASET ABNS = ABNS_A,ACFT = ACFT_A,AIRLINE = AIRLINE_A,CHDT = CHDT_A,RENO = RENO_A,EIBT = EIBT_A,FATA = FATA_A,FETA = FETA_A,FSTA = FSTA_A,LMDT = LMDT_A,LMUR = LMUR_A,PSTM = PSTM_A,RWAY = RWAY_A,SPOT = SPOT_A,STND = STND_AWHERE FFID = FFID_A;ELSEINSERT INTO TB_CMS_FLGTINFO_A (ID,ABNS,ACFT,AIRLINE,CHDT,FFID,FLIGHTNUMBER,FLIGHTMARK,RENO,EIBT,FATA,FETA,FSTA,LMDT,LMUR,PSTM,RWAY,SPOT,STND)VALUES   (FLGTINFO_A_SEQ.NEXTVAL,ABNS,ACFT,AIRLINE,CHDT,FFID_A,FLIGHTNUMBER,FLIGHTMARK,RENO,EIBT_A,FATA_A,FETA_A,FSTA_A,LMDT_A,LMUR,PSTM_A,RWAY,SPOT_A,STND);END IF;END IF;COMMIT;EXCEPTIONWHEN OTHERSTHENDBMS_OUTPUT.PUT_LINE (SQLERRM);END MIP_PARSE;
/

三:详情请看: http://www.zuidaima.com/question/2041312860310528.htm

Oracle存储过程中如何根据指定的参数判断该参数的值否存在数据表中:相关推荐

  1. MySQL修改数据表中的字段名

    MySQL修改数据表中的字段名 在一张数据表中只能设置一个唯一名称的字段名.在同一张数据表中,不能出现两个名称完全相同的字段名. 因此,数据库系统可以通过字段名来区分数据表中的不同字段. 在MySQL ...

  2. Oracle存储过程procedure in、out、in out 模式参数【不发布,纯转】

    Oracle存储过程procedure in.out.in out 模式参数 Oracle存储过程基本语法介绍 注意存过不会自动提交,需要在存过本身添加commit; rollback;等语句 转载于 ...

  3. Oracle中通过存储过程,Function,触发器实现解析时间类型的字段并插入的对应的数据表中...

    摘要:之前在项目中解决了插入字符串类型的数据,今天试着写了一个插入date类型的字段,成功了,现在记录一下,以便以后查看: 一:首先建立一个根据xml节点名称获取对应的xml值的Function.sq ...

  4. 如何查询数据表中指定字段的内容?

    @R星校长 查询数据表中指定字段的内容 MySQL从数据表中查询数据的基本语句为SELECT语句. SELECT语句的可选参数比较多,让我们先从最简单的开始,带大家一步一步的深入SELECT语句的使用 ...

  5. lmbs PHP,PHP 清空 MySql 指定数据表中的所有数据

    PHP 清空 MySql 指定数据表中的所有数据 PHP 清空 MySql 指定数据表中的所有数据,在烈火小编在网上闲逛时,这是某技术博客的一篇文章,说是文章,并没有文字,只有代码,经过测试可以使用, ...

  6. mssql sqlserver 禁止删除数据表中指定行数据(转自:http://www.maomao365.com/?p=5323)

    转自:http://www.maomao365.com/?p=5323 摘要: 下文主要讲述,如何禁止删除数据表中指定行数据 最近收到用户一个需求,禁止所有人删除"表A"中,ID ...

  7. oracle中修改多个字段默认值_利用VBA代码在已有的数据表中删除、添加、修改字段...

    大家好,今日继续给大家讲解VBA数据库解决方案的第21讲,如何利用VBA代码在已有的数据表中删除,添加,修改字段.这个内容是操作数据库的一项必修的内容,还望大家在实际工作中多利用,所以这节的知识,对于 ...

  8. SQL删除数据表中指定列重复的数据

    在对数据库操作的过程中难免会因为操作失误使数据库中的数据表中出现重复数据,下面我们要将这些数据重复数大于一的其他数据删除,只保留一条. 关于这个问题的处理方式网上一搜一大堆,但是以下两种方法貌似还没有 ...

  9. mysql数据表中取几列_MySQL查询数据表中数据记录(包括多表查询)

    MySQL查询数据表中数据记录(包括多表查询) 转自:http://www.baike369.com/content/?id=5355 在MySQL中创建数据库的目的是为了使用其中的数据. 使用sel ...

最新文章

  1. 不讲武德,拿到户口后立马辞职...
  2. 汉明距离—leetcode461
  3. 2020年中国互联网租车报告
  4. SYSTEM32 下的几乎所有文件的简单说明
  5. 平板电脑安装软件_下载适用于华为和荣耀手机平板电脑的Googlefier GMS安装程序...
  6. 判断数据表是否存在,不存在则创建
  7. ABAP 常用FUNCTION (最近工作中用到的)
  8. 【路径规划】基于matlab GUI蚁群算法求解机器人栅格地图最短路径规划问题【含Matlab源码 927期】
  9. Visio 2016软件
  10. 凭什么?80后合伙人“叫板Excel”
  11. 怎么用ps通道快速抠图?实用图解
  12. 时间换算:UTC是世界协调时,BJT是北京时间,UTC时间相当于BJT减去8
  13. 怎样测试企业级SSD
  14. 微信小程序上传图像或者文件到阿里云oss
  15. 淘宝直播窄带高清技术
  16. 领略千变万化的Android Drawable (一)
  17. python数据分析网上培训
  18. Cubemap to Equirectangular Converter (天空盒 转 全景图)
  19. Cocos Creator JSB [Lv.1] (1)
  20. 2020年团体程序设计天梯赛 L3-1 那就别担心了 (30分)

热门文章

  1. 通州区机器人比赛活动总结_马驹桥镇中心小学在2017通州区青少年机器人竞赛中勇创佳绩...
  2. php中一级标题和二级标题,什么是一级标题,一二三标题格式举例
  3. 虚幻4渲染系统结构解析
  4. 创业型公司的产品经理应该知道的事情
  5. 如何使用autotools工具
  6. wince2秒快速启动TOC分析
  7. windows mobile 编译(生成镜像)提速
  8. python爬虫淘宝评论_Python爬取淘宝店铺和评论
  9. js如何获取计算机当前时间,js获取当前系统时间
  10. foxmail 怎么把邮件格式默认为html_Python SMTP发送邮件-smtplib模块