• Oracle总结之plsql编程(基础七)


    紧接基础六,对oracle角色和权限的管理之后,在接下来的几次总结中来就最近工作中用过的plsql编程方面的知识进行总结,和大家分享!

    原创作品,转自请注明出处:https://www.cnblogs.com/sunshine5683/p/10296531.html

    一、plsql块

    1、只包括执行部分的plsql块

    打开输出选项:set serveroutput on;

    begin

    dbms_output.put_line('');

    end;

    如上,只有打开了serveroutput才可以看到输出信息。

    2、包含定义部分和执行部分的plsql块

    declare

    v_name  varchar2(5);--定义字符串变量

    begin

    select ename into v_name from emp where empno=&no;

    dbms_output.put_line(‘雇员们’||v_name);

    end

    输入编号,OK

    3、包含定义部分、执行部分、例外处理部分的plsql块(即完整的plsql块)

    在通常的plsql块中,难免会遇到执行中的错误,然后再编写的过程中应该尽量对可能出现的异常进行处理,所以这种情况下异常处理就显得格外重要。

    declare

    v_name  varchar2(5);--定义字符串变量

    begin

    select ename into v_name from emp where empno=&no;

    dbms_output.put_line(‘雇员们’||v_name);

    exception

    when no_data_found then

    dbms_output.put_line('输入有误');

    end

    下面实例就是当输入的编号不存在时,不会保存,输出提示“输入有误”!

    4、创建存储过程

    create procedure sp_test1(spName varchar2, newsal number)is

    begin

    update scott.emp set sal=newsal where ename=spName;

    end;

    调用该存储过程

    由上图可以看到调用存储过程前后的变化

    二、使用java调用存储过程

     1 //使用java调用oracle中的存储过程
     2 //注意要引入oracle的jar包classes12.jar
     3 package xhq.test;
     4 import java.sql.*;
     5 public class TestOracleProcedure{  
     6     public static void main(String [] args){
     7         try{
     8             //1、加载驱动
     9             Class.forName("oracle.jdbc.driver.OracleDriver");
    10             //2、得到连接
    11             Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","user","password");
    12             //创建CallableStatement
    13             CallableStatement cs = conn.prepareCall("{call sp_test1(?,?)}");
    14             //给?赋值
    15             cs.setString(1,"SMITH");
    16             cs.setInt(2,10);
    17             //执行
    18             cs.execute();
    19             //关闭
    20             cs.close();
    21             conn.close();
    22         }catch(Exception e){
    23             e.printStackTrace();
    24         }
    25     }
    26 }

    今天总结到此结束,下次接着继续总结!


  • 相关阅读:
    微信助力活动表结构设计
    mysql的in查询分析
    PHP从数组中找到指定元素的位置
    Java程序使用Alpine Linux报错java.lang.NoClassDefFoundError: Could not initialize class org.xerial.snappy.Snappy解决
    Eclipse/Idea 代码格式化部分忽略
    修改Linux桌面高分屏下QT程序界面的缩放
    折腾linux随笔 之 关闭Budgie默认自动隐藏应用的菜单栏 与 Gnome系桌面应用菜单无内容解决
    Debian Buster 使用Lxde在界面中打开url提示错误解决
    Portainer容器可视化管理工具使用文档
    Lxde添加触摸板双击功能、防误触
  • 原文地址:https://www.cnblogs.com/sunshine5683/p/10296531.html
Copyright © 2020-2023  润新知