zoukankan      html  css  js  c++  java
  • oracle执行多个pl/sql块


    DECLARE  
      V_SQL_DROP_TABLE   VARCHAR2(50) := 'DROP TABLE MY_TEST2';  
      V_SQL_CREATE_TABLE VARCHAR2(100) := 'CREATE TABLE MY_TEST2(NOT_NULL VARCHAR2(20) NOT NULL, ONLY_INT INTEGER)';  
    BEGIN  
      EXECUTE IMMEDIATE V_SQL_CREATE_TABLE; -- 创建测试表  
    EXCEPTION  
      -- 如果表已存在,则会引发异常  
      WHEN OTHERS THEN  
        EXECUTE IMMEDIATE V_SQL_DROP_TABLE; -- 先删除  
        EXECUTE IMMEDIATE V_SQL_CREATE_TABLE; -- 再创建  
    END;  
    /  
    --2.用我们刚创建的测试表进行测试  
    DECLARE   
      V_COUNT INTEGER; -- 表中记录的行数  
      V_INT_VAL MY_TEST.ONLY_INT%TYPE; -- 使用%TYPE关键字参照某表某字段类型声明变量  
    BEGIN  
      V_INT_VAL := 123456;  
      -- 插入一条正确的数据  
      INSERT INTO MY_TEST2 VALUES ('TEST_SUCCESS', V_INT_VAL);  
      -- 查询条数为1条,我们发现插入成功了  
      SELECT COUNT(*) INTO V_COUNT FROM MY_TEST;  
      DBMS_OUTPUT.put_line('MY_TEST表中有' || V_COUNT || '条记录');  
     
      -- 插入一条错误的数据,因为第二个字段为int型,插入字符数据肯定会出错  
     /* INSERT INTO MY_TEST VALUES ('TEST_FAIL', 'ABC');  */
     
      -- 最后提交更改  
      COMMIT;  
    EXCEPTION  
      -- 异常处理  
      WHEN OTHERS THEN  
        ROLLBACK; -- 异常时回滚,这样第一次插入的正确数据也不会保存到数据库  
        DBMS_OUTPUT.put_line('[PL/SQL 事务]中出现异常,错误代码:ORA' || sqlcode);  
        -- 我们验证一下表里的数据为0条  
        SELECT COUNT(*) INTO V_COUNT FROM MY_TEST;  
        DBMS_OUTPUT.put_line('回滚后,MY_TEST表中有' || V_COUNT || '条记录');  
    END; -- 可执行语句结束  
    / -- 该符号表示执行这段PL/SQL代码

  • 相关阅读:
    指针的引用
    引用的基础知识
    const的基础用法
    解决'fopen':this function or variable may be unsafe先关问题的方法
    C++类中不写成员函数易犯错模型
    PCB接地设计宝典:ADI资深专家总结的良好接地指导原则
    电路板级的电磁兼容性设计
    自然对流仿真设置
    Pspice 原理图以及仿真图 输出到 word
    信号完整性常见问题
  • 原文地址:https://www.cnblogs.com/kexb/p/4465340.html
Copyright © 2011-2022 走看看