zoukankan      html  css  js  c++  java
  • 存储过程二

    0. sql语句的提交和回滚

    a. 可直接执行增删改,只用在最后提交时使用

    strsql='insert into....";

    execute immediate str_sql;

    commit; 所有的语句会一起提交

    b. 在程序一开始就设置回滚点

    savepoint save_point1;   --定义回滚保存点

    c 执行sql语句后提交/回滚

    execute immediate str_sql;
         exception
          when others then
              rollback to save_point1; /*异常处理,保存点下面的操作都不会被执行*/
              Out_msg :='操作失败!'; --输出变量
        commit;

    1. 输出

    --DBMS_OUTPUT.PUT_LINE(sqlstr);

    2. 输出参数(返回数据集)

    参数: returnResult OUT DATA_OPRSTORE.selectoprcursor ) --返回的结果集

    返回: OPEN returnResult FOR sqlstr;            --返回结果集

       System.Data.OracleClient.OracleParameter dbPara = new System.Data.OracleClient.OracleParameter();
                dbPara.ParameterName = @“returnValue”;
                dbPara.OracleType = OracleType.Cursor;
                dbPara.Direction = ParameterDirection.Output;

    3. 参数条件判断

    if 有值 else 空值,对应存储过程的default null,不满足查询提交时可传null值或不传值

       if (!string.IsNullOrEmpty(_model.ss))
                {
                    pa = OracleHelper.GetParameter(@":ss", _model.ss, _model.ss.Length, ParameterDirection.Input, OracleDbType.Varchar2, OracleCollectionType.None);
                                }
                else
                {
                    pa = OracleHelper.GetParameter(@":ss", null, _model.ss.Length, ParameterDirection.Input, OracleDbType.Varchar2, OracleCollectionType.None);
                             }

    ss IN VARCHAR2 DEFAULT NULL,         

    4. 日期参数

    UpToDate2 IN DATE DEFAULT NULL,         --销售时间

    sqlstr:=sqlstr||' AND ssm.stockindate <='''||UpToDate1||'''';

    5. 获得sql返回值(agencyName 为定义的变量 agencyName VARCHAR2(1000);)

    select (SELECT sa.agencyname FROM agency sa WHERE sa.agencyid=4444) into agencyName from dual;

    6. 获取数据库中的某一行作为实体类返回

    a. 定义变量: ShopInfo shop_ss%rowtype;      --shop_ss必须和表的名称一致

    b. select * into ShopInfo from shop_ss where id=12 ;
    IF ShopInfo.cid IS NOT NULL THEN
        DBMS_OUTPUT.put_line('实体类成功!');
       END IF ;

    7. 轮询数据库中的每一行

    a. 定义类型和变量

    type ShopCur is table of shop%rowtype index by binary_integer;     --定义类型(shop 必须和表名一致)
    S_Read     ShopCur;      --定义变量

    b. 使用

       execute immediate 'select * from shop'
         bulk collect into S_Read;
        if S_Read is not null then
       i := S_Read.count;
                    while i > 0 loop
                          if S_Read(i).var1 <= 44 then
                              tempVar:= S_Read(i).var2;
                              exit;
                          end if;
                    i := i -1;
                    end loop;
       END IF ;

    8. 存储过程嵌套调用传递参数

    Shop_Upgrade(S_C => S_C1,S_A => S_A);

    Shop_Upgrade为被调用的存储过程名称,S_C ,S_A为两个存储过程都有的变量

    ---S_C参数名 S_C1 参数值

  • 相关阅读:
    print格式化输出(format)
    Python list,tuple,dict,set高级变量常用方法
    K8s的kubectl常用命令
    C/C++中数组与指针的关系探究
    Java中的不可变类
    JAVA 类总结
    c++ string类find总结
    关于看板娘的事儿
    类型转换
    计算机2进制小数点表示法
  • 原文地址:https://www.cnblogs.com/gossip/p/2269397.html
Copyright © 2011-2022 走看看