zoukankan      html  css  js  c++  java
  • plsql下面执行BEGIN END语句

    以前一直使用PLSQL的存储过程和单条SQL语句,都没有发现什么问题,今天需要处理一个临时的问题,需要根据已有的数据动态添加数据到表里面。

    一开始的时候是这样写的

    declare v_maxid int;
    begin
         select max(id) into v_maxid from t_actiongroup;
           if v_maxid is null then
                v_maxid:=0;
           end if;
         v_maxid:=v_maxid+1;
         insert into t_actiongroup values(v_maxid,15,1);
    
         v_maxid:=v_maxid+1;
         insert into t_actiongroup values(v_maxid,16,1);
    
         v_maxid:=v_maxid+1;
         insert into t_actiongroup values(v_maxid,17,1);
    
         v_maxid:=v_maxid+1;
         insert into t_actiongroup values(v_maxid,18,1);
    
         v_maxid:=v_maxid+1;
         insert into t_actiongroup values(v_maxid,19,1);
    
         v_maxid:=v_maxid+1;
         insert into t_actiongroup values(v_maxid,20,1);
    
         v_maxid:=v_maxid+1;
         insert into t_actiongroup values(v_maxid,21,1);
    
         v_maxid:=v_maxid+1;
         insert into t_actiongroup values(v_maxid,23,1);
    
         v_maxid:=v_maxid+1;
         insert into t_actiongroup values(v_maxid,24,1);
    
         v_maxid:=v_maxid+1;
         insert into t_actiongroup values(v_maxid,31,1);
    
         v_maxid:=v_maxid+1;
         insert into t_actiongroup values(v_maxid,32,1);
    
         v_maxid:=v_maxid+1;
         insert into t_actiongroup values(v_maxid,33,1);
    
         v_maxid:=v_maxid+1;
         insert into t_actiongroup values(v_maxid,34,1); 
    end;
    commit;

    这里有两个问题:
    一:在PLSQL的Commond窗口里面光标一直在闪动,貌似命令没有输入完毕

    一开始还不知道为什么,后来通过问别人才知道,在Commond窗口里面这样的情况需要手动打入"/"才会被提交,于是发生了另个一问题-->

    二:提交以后提示在COMMIT这里报错

    这才发现原来COMMIT命令不能用在这样的地方,于是改成了下面的书写方式

    declare v_maxid int;
    begin
         select max(id) into v_maxid from t_actiongroup;
           if v_maxid is null then
                v_maxid:=0;
           end if;
         v_maxid:=v_maxid+1;
         insert into t_actiongroup values(v_maxid,15,1);
    
         v_maxid:=v_maxid+1;
         insert into t_actiongroup values(v_maxid,16,1);
    
         v_maxid:=v_maxid+1;
         insert into t_actiongroup values(v_maxid,17,1);
    
         v_maxid:=v_maxid+1;
         insert into t_actiongroup values(v_maxid,18,1);
    
         v_maxid:=v_maxid+1;
         insert into t_actiongroup values(v_maxid,19,1);
    
         v_maxid:=v_maxid+1;
         insert into t_actiongroup values(v_maxid,20,1);
    
         v_maxid:=v_maxid+1;
         insert into t_actiongroup values(v_maxid,21,1);
    
         v_maxid:=v_maxid+1;
         insert into t_actiongroup values(v_maxid,23,1);
    
         v_maxid:=v_maxid+1;
         insert into t_actiongroup values(v_maxid,24,1);
    
         v_maxid:=v_maxid+1;
         insert into t_actiongroup values(v_maxid,31,1);
    
         v_maxid:=v_maxid+1;
         insert into t_actiongroup values(v_maxid,32,1);
    
         v_maxid:=v_maxid+1;
         insert into t_actiongroup values(v_maxid,33,1);
    
         v_maxid:=v_maxid+1;
         insert into t_actiongroup values(v_maxid,34,1);
    
         commit;
    end;
    /

    就这样,SQL语句就可以正常执行了。

    --------------------------------------------------------------------------------------------------------------------------------------------
    顺势而为
  • 相关阅读:
    Go-41-回调
    生产者和消费者模型
    等待和通知
    Java 实现多线程的三种方式
    synchronized(修饰方法和代码块)
    volatile 关键字(修饰变量)
    并发三大特性
    Thread 和 Runnable
    《深入理解 Java 虚拟机》学习 -- Java 内存模型
    《深入理解 Java 虚拟机》学习 -- 类加载机制
  • 原文地址:https://www.cnblogs.com/zhuzhenyu/p/2717990.html
Copyright © 2011-2022 走看看