数据库-过程 PL/SQL 的运用
来源:互联网 发布:unity3d playmaker 编辑:程序博客网 时间:2024/06/03 15:15
过程是指用来完成特定任务的子程序其语法规则如下:
create or replace procedure <procedure_name> [<parameter_list>]is|as <local> variable declarationbegin <executable statement>exception <exception handlers>end;
过程的参数类型
in:入参 默认是入参的
out:出参
in out :出入参
应用一:查找数据库信息
create or replace procedure pro_ts1(v_empno number)as empname emp.ename%type; --[default '张三']begin select ename into empname from emp where empno = v_empno; dbms_output.put_line('雇员名为'||empname);exception when no_data_found then dbms_output.put_line('没有找到您要的数据......'); empname:='匿名'; dbms_output.put_line('雇员名为'||empname);end;
应用二:根据员工编号,查选员工信息,要求将查到的员工姓名返回给调用者
create or replace procedure pro_ts2(v_empno in number,v_ename out varchar2)isbegin select ename into v_ename from emp where empno=v_empno;exception when no_data_found then v_ename:='匿名';end;declare v_ename varchar2(100);begin pro_ts2(77888,v_ename); dbms_output.put_line(v_ename);end;
应用三:实现两个数之间的交换,并返回交换后得结果
create or replace procedure pro_ts3(v_num1 in out number,v_num2 in out number)as v_temp number(10);begin v_temp:=v_num1; v_num1:=v_num2; v_num2:=v_temp;end;declare v_num1 number(10):=10; v_num2 number(10):=20;begin pro_ts3(v_num1,v_num2); dbms_output.put_line('num1:'||v_num1||'num2:'||v_num2);end;
应用四:创建一个存储过程,用来向dept表中添加数据
数据库代码如下:
create or replace procedure pro_addDept(v_deptno number,v_dname varchar2,v_loc varchar2,v_result out number)as v_count number;begin select count(deptno) into v_count from dept where deptno=v_deptno; if v_count >0 then v_result:=1; else insert into dept values(v_deptno,v_dname,v_loc); v_result:=3; end if;exception when others then v_result:=2;end;
java代码如下:
public class sqlTest { public static void main(String[] args) throws Exception { Class.forName("oracle.jdbc.driver.OracleDriver"); Connection con=null; CallableStatement cs; con=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","scott","a"); cs = con.prepareCall("call pro_addDept(?,?,?,?)"); //给入参占位符赋值 cs.setString(1,"20"); cs.setString(2, "人事部"); cs.setString(3, "湖南衡阳"); //给出参占位符设置类型 cs.registerOutParameter(4, OracleTypes.NUMBER); cs.execute(); //指定过程 //获得出参值 int result=cs.getInt(4); if(result==1){ System.out.println("部门编号存在"); }else if(result==2){ System.out.println("数据添加失败。。。"); }else if(result==3){ System.out.println("数据添加成功。。。"); }else{ System.out.println("未知错误"); } cs.close(); con.close(); }}
应用五:传出数据库的数据
数据库代码:
create or replace package navy_package as type cur is ref cursor;end;create or replace procedure pro_findEmpByDeptNo(v_deptno number,v_cur out navy_package.cur)isbegin if v_deptno=0 then open v_cur for select * from emp; else open v_cur for select * from emp where deptno=v_deptno; end if;end;
需要将数据进行打包
java代码:
public class sqlTest2 { public static void main(String[] args) throws Exception { Class.forName("oracle.jdbc.driver.OracleDriver"); Connection con=null; CallableStatement cs; con=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","scott","a"); cs = con.prepareCall("call pro_findEmpByDeptNo(?,?)"); //给入参占位符赋值 cs.setInt(1, 60); //给出参占位符设置类型 cs.registerOutParameter(2, OracleTypes.CURSOR); cs.execute(); //指定过程 //获得出参值 ResultSet rs=(ResultSet) cs.getObject(2); while(rs.next()){ System.out.println(rs.getString(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3)); } cs.close(); con.close(); }}
1 0
- 数据库-过程 PL/SQL 的运用
- pl/sql的循环运用
- 数据库存储过程 PL-SQL
- Oracle数据库PL/SQL过程调试的输出方法
- PL/SQL中编写Oracle数据库分页的存储过程
- PL/SQL中编写Oracle数据库分页的存储过程
- sql数据库的基础运用
- PL/SQL 动态CURSOR运用
- [PL/SQL]导入文件内的数据到数据库(针对本博的导出存储过程)
- oracle 11g数据库+pl/sql developer 组合的安装及配置过程
- PL/SQL 数据库访问的相关技术(2)游标 、异常、存储过程、函数、包、触发器
- PL/SQL存储过程的开发
- PL/SQL Developer的详细安装过程
- PL/SQL的进阶----编写分页过程
- PL/SQL的存储过程和函数
- PL/SQL Developer的调试存储过程
- PL/SQL 存储过程的测试
- PL/SQL的存储过程和函数
- 结合Linux的应用场景看MIPS32架构之内存管理
- md-checkbox
- 单链表快排
- 99乘法表问题与解决
- JavaScript substring() 方法
- 数据库-过程 PL/SQL 的运用
- SQL语句中between and 范围
- ActionScript 3.0 学习(十八) away3D学习3 away3d骨骼动画相关笔记
- 自定义控件、Fragment、Handler详解
- Java 并发工具包 java.util.concurrent 用户指南
- BGRABitmap图像操作6:线的两种连接方式
- 微软面试100题系列---约瑟夫环问题
- C/C++获取当前系统时间
- 编译dumpdecrypted.dylib