zoukankan      html  css  js  c++  java
  • Oracle 测试语句

    一、简单测试

    declare l_card_id number;
            v_result  varchar2(1000);
    begin 
       select t.card_id into l_card_id from (
              select t.rowid from sup_card t 
              where t.card_id = 41
              order by t.card_No desc,t.up_load_date asc
              ) R 
        inner Join sup_card t on R.Rowid = t.rowid 
              where rownum < 2;
        
        if (l_card_id is null) then
           v_result := 'It is null';
        elsif (l_card_id = 0) then 
           v_result := 'Zero';
        else
           v_result := l_card_id;
        end if;
        
        dbms_output.put_line(v_result); 
    end;
    View Code

    split_type的理解、使用: 

    declare
      l_auto_i   integer;
      l_sup_list split_type;
    begin
    
      l_sup_list := em_f_split(&liststr);
    
      l_auto_i := l_sup_list.first;
    
      while l_auto_i is not null loop
      
        dbms_output.put_line(l_auto_i || ':' || l_sup_list(l_auto_i));
      
        -- 进1
        l_auto_i := l_sup_list.next(l_auto_i);
      end loop;
    
      dbms_output.put_line('END');
    end;
    View Code

    问题:1. 如果查询card_id的数据没有,那么t.card_id into l_card_id时,将抛出异常

    2. elseif 的写法是 elsif,少了个e.

    二、参数是游标的测试

     1 declare
     2   xx bp_platform_order%rowtype;
     3   cursor cur is
     4     select * from bp_platform_order o where o.product_no = '4';
     5 begin
     6   open cur;
     7   loop
     8     fetch cur
     9       into xx;
    10     exit when cur%notfound;
    11     dbms_output.put_line('**=' || xx.platform_order_id);
    12   end loop;
    13   close cur;
    14 end;
    游标行
     1 declare
     2   xx varchar2(1000);
     3   yy number;
     4   cursor cur is
     5     select o.platform_order_id,o.order_status from bp_platform_order o where o.product_no = '4';
     6 begin
     7   open cur;
     8   loop
     9     fetch cur
    10       into xx,yy;
    11     exit when cur%notfound;
    12     dbms_output.put_line('**=' || xx);
    13   end loop;
    14   close cur;
    15 end;
    游标列

    三、可以输入值得测试

     1 declare
     2   -- Non-scalar parameters require additional processing 
     3   result   split_type;
     4   l_auto_i integer;
     5 begin
     6   -- 必须用&标记输入变量
     7   -- 在弹出的框中输入测试值时,字符串必须用‘’包起来
     8   result   := bp_f_split(&p_str, &p_delimiter);
     9   l_auto_i := result.first;
    10   while l_auto_i is not null loop
    11   
    12     dbms_output.put_line(to_char(l_auto_i) || '=>' ||
    13                          to_char(result(l_auto_i)));
    14     if (result(l_auto_i) is null) then
    15       dbms_output.put_line(to_char(l_auto_i) || '****null');
    16     end if;
    17     l_auto_i := result.next(l_auto_i);
    18   end loop;
    19 end;
    可以输入值
     

    四、 while循环

     1 declare
     2   l_card_id number;
     3   v_result  varchar2(1000);
     4   l_date    date := trunc(sysdate, 'mm');
     5   l_result1 number;
     6   l_result2 number;
     7   l_result3 number;
     8 begin
     9   while l_date > to_date('20140701', 'yyyymmdd') loop
    10   
    11     begin
    12     
    13       l_date := l_date - 1;
    14 
    15       dbms_output.put_line(to_char(l_date, 'yyyy-mm-dd: ') ||
    16                            to_char(l_result1) || '' || to_char(l_result2) ||
    17                            to_char(l_result3));
    18     
    19     end;
    20   
    21   end loop;
    22 
    23   dbms_output.put_line('over!!');
    24 end;
    While按日期循环
  • 相关阅读:
    Educational Codeforces Round 59 (Rated for Div. 2)E. Vasya and Binary String 区间dp
    MySQL语法大全
    D. Buy a Ticket(优先队列+dijkstra)
    Two Sets(并查集分类)
    KMP浅显易懂
    深度理解链式前向星
    快速幂(幂运算取模的logn算法)
    hdu---1950---Bridging signals解题报告(求Lis n*logn贪心+二分搜索)
    dp背包
    线段树模板
  • 原文地址:https://www.cnblogs.com/Denny_Yang/p/2864232.html
Copyright © 2011-2022 走看看