zoukankan      html  css  js  c++  java
  • oracle 触发器number判断空值,:NEW赋值,for each row,sql变量引号,to_date,to_char

    1.number类型在库中可能存在null这种数据

      判断是否为空时要用如下:

      IF(nvl(:NEW.BACAH,0) <>0)

     不能用IF(BACAH IS NOT NULL)

    2.

      2.1 、取值时,需要到:NEW中取,有时也要到:OLD中取,具体情况具体分析

             赋值如红色

             1.SELECT B38_CODE INTO code FROM TEMP WHERE BAC_BACAW=:NEW.BACAW AND BAC_BACAE=:NEW.BACAE;

              变量赋值

              2.temp:==:NEW.BACAE

      2.2、 FOR EACH ROW代表一条一条数据执行

          create or replace TRIGGER TR_BAC
          BEFORE  INSERT OR UPDATE
          ON BAC_BACK
          FOR EACH ROW
          DECLARE

    3. sql语句放入变量中,并执行,注意引号的运用

    sql_temp := 'UPDATE b38_back SET '||code||'='||:NEW.BACAH || ' WHERE B0110= '''||:NEW.B0110||''' AND  TO_CHAR (B38Z0,''YYYYMM'') = TO_CHAR(TO_DATE('''||:NEW.BACZ0||'''),''YYYY'')||''01''';    

    execute immediate sql_temp;

    number型一个引号,varchar2三个引号,看例子分析一下,很简单,为啥yyyymm是俩个引号,因为时间执行的sql时yyyy要放入到’yyyy‘中,所以俩个引号,同理'''||:NEW.B0110||'''也要是’1000‘,这种格式,第一个引号与前面的引号相连,后面俩个空1000左右俩个引号

    4.  TO_CHAR 与   TO_DATE的使用,如3,

    TO_CHAR (B38Z0,''YYYYMM'') = TO_CHAR(TO_DATE('''||:NEW.BACZ0||'''),''YYYY'')||''01''';  

    注意如下: 要将变量转为date类型,不然会出现to_char('01-1月-15',‘yyyy’)出错

  • 相关阅读:
    CSS3单选动画
    CSS3不一样的下拉选择框
    CSS3实现3d菜单翻转
    CSS3实现加载数据动画2
    CSS3实现加载数据动画1
    MySQL事务隔离级别和Spring事务关系介绍(转载)
    Elasticsearch7.5&Kibana7.5安装
    用nginx实现https请求转http请求(转)
    elasticsearch中多个字段聚合两种方法介绍
    window 同时安装python2和python3
  • 原文地址:https://www.cnblogs.com/beijingstruggle/p/5014860.html
Copyright © 2011-2022 走看看