一个Oracle循环例子

DECLARE
  v_index     NUMBER(2);
  v_tmp       VARCHAR2(10);
  v_month     VARCHAR2(10);
  v_yearmonth VARCHAR2(10);
  v_result    VARCHAR2(50);
  v_year      VARCHAR2(10);
  v_maxMonth  NUMBER(2);
BEGIN
   v_year := '';
   v_index := 0;
   v_result := '';
   LOOP
      v_index := v_index + 1;   
      
      if v_index>26 then
         exit;
      end if;
      
      if (v_index < 13) then
         v_month := v_index;
      elsif (v_index > 12 and v_index < 25) then
         v_month := to_char(v_index - 12);       
      elsif (v_index > 24) then
        v_month := to_char(v_index - 24);
      end if;
      
      if (length(v_month) < 2) then
         v_month := '0' || to_char(v_month);       
      else
        v_month := to_char(v_month);
      end if;            
      
      if (v_index > 12 and v_index < 25)  then
         v_year := '2013';     
      elsif (v_index > 24) then  
         v_year := '2014';   
      else
         v_year := '2012'; 
      end if;       
      
      v_yearmonth := v_year || to_char(v_month); 
     
      dbms_output.put_line(v_yearmonth); 
   END LOOP; 
END;


结果:

201201
201202
201203
201204
201205
201206
201207
201208
201209
201210
201211
201212
201301
201302
201303
201304
201305
201306
201307
201308
201309
201310
201311
201312
201401
201402


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 我可以用Oracle来写一段循环SQL,例如:BEGIN FOR i IN 1..10LOOP IF i = 1 THEN DBMS_OUTPUT.PUT_LINE('第一次循环'); ELSE DBMS_OUTPUT.PUT_LINE('第' || i || '次循环'); END IF; END LOOP; END; ### 回答2: 使用Oracle编写循环SQL可以使用PL/SQL语言来实现。下面是一个例子: ``` DECLARE num NUMBER := 1; -- 设置一个初始值为1的变量 BEGIN WHILE num <= 10 LOOP -- 当num小于或等于10时执行循环 -- 在此处添加你要执行的循环操作,可以是INSERT、UPDATE、DELETE等语句 -- 例如: INSERT INTO tableName (column1, column2) VALUES (num, 'Value ' || num); num := num + 1; -- 增加num的值,以便下一次循环 END LOOP; -- 结束循环 END; / ``` 上述例子演示了一个简单的循环,从1到10,每次循环将num的值插入到某个表中的两个列中,同时num的值递增,直到达到循环结束条件(num大于10)为止。你可以根据自己的需求修改循环体内的具体操作。 ### 回答3: 可以使用Oracle的PL/SQL来编写一段循环的SQL语句。下面是一个使用循环的示例,根据一张包含数值的表,计算每个数值的平方,并将结果插入到另一个表中: ``` DECLARE num_id table1.id%type; -- 声明一个变量来存储数值的id num_val table1.value%type; -- 声明一个变量来存储数值的值 BEGIN -- 通过游标遍历表1中的所有记录 FOR rec IN (SELECT id, value FROM table1) LOOP num_id := rec.id; -- 将当前记录的id赋值给变量 num_val := rec.value; -- 将当前记录的值赋值给变量 -- 进行计算并插入到表2中 INSERT INTO table2(id, squared_value) VALUES(num_id, num_val * num_val); END LOOP; END; ``` 在上述代码中,我们使用了一个游标来遍历表1中的所有记录。然后,我们将每个记录的id和对应的值赋值给变量。接下来,我们进行计算并将结果插入到表2中,其中平方值通过`num_val * num_val`得到。通过循环遍历每条记录并计算,最终将结果插入到另一个表中。 需要注意的是,这只是一个示例,实际应用可能需要根据具体需求进行适当的修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值