博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
存储过程二
阅读量:6693 次
发布时间:2019-06-25

本文共 2133 字,大约阅读时间需要 7 分钟。

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 参数值

转载于:https://www.cnblogs.com/gossip/archive/2011/11/30/2269397.html

你可能感兴趣的文章
数据库读写分离
查看>>
社交是微信营销
查看>>
2008 R2 证书服务器应用详解
查看>>
hive 动态分区太多问题
查看>>
Windows Server 2008 RemoteApp(二)---部署激活远程桌面授权服务器
查看>>
读取日志文件开发总结
查看>>
IOS --React Native
查看>>
Linux CPU
查看>>
Linux/Centos ntp时间同步,联网情况和无网情况配置
查看>>
初级网络运维工程师比赛题目
查看>>
跨交换机实现vlan实验报告
查看>>
jquery easyui滚动条部分设置介绍
查看>>
cannot find -lxxx问题
查看>>
预防云端开源项目打包 Redis Labs再更改模块
查看>>
超惊人!去年发生的身分外泄安全事件是2017的4倍
查看>>
oracle sqlplus免安装的配置instantclient-basiclite
查看>>
Java开发GUI之选择列表
查看>>
一、分布式商城架构逻辑图
查看>>
机器人是如何完成避障的?机器人避障解决方案解读
查看>>
通过错误堆栈信息和源码分析错误来源
查看>>