Oracle数据库学习笔记四

时间:2021-06-25 08:37:51

Oracle数据库学习

Oracle数据库学习笔记四

系统权限不是级联回收。 对象权限的访问 Oracle数据库学习笔记四
对象权限是级联回收的。角色角色分为预定义角色自定义角色。预定义角色:Oracle数据库学习笔记四
Oracle数据库学习笔记四
Oracle数据库学习笔记四
自定义角色:
Oracle数据库学习笔记四
角色授权:
Oracle数据库学习笔记四
Oracle数据库学习笔记四

删除角色:

Oracle数据库学习笔记四

PL/SQL的简介

pl/sql(procedural language/sql)是oracle在标准的sql语言上的扩展,pl/sql不允许嵌入sql语言,还可以定义常量和变量,允许使用条件语句和循环语句,允许使用例外处理各种错误,这样使得它的功能变得更加强大。

1.过程、函数和触发器是pl/sql编写的 2.过程、函数和触发器是在Oracle中的 3.pl/sql是非常强大的数据库过程语言 4.过程、函数可以在java中调用 过程的使用: 1.创建一个简单地表
create table mytestname varchar230),password varchar230));

2.创建过程
create or replace procedure sq_prol isbegininsert into mytest(’liheng‘,’123‘);end

如何查看错误信息 show error; 如何使用过程:
  • exec 过程名(参数值1,参数值2)
  • call 过程名(参数值1,参数值2)
函数的使用
Oracle数据库学习笔记四

函数的案例 输入雇员的姓名,返回该雇员的年薪
create function sp_fun2(spName varchar2) returnnumber is yearSal number(7,2);beginselect sal*12+nvl(comm,0)*12 into yearSal from emp where ename=spName;return yearSal;end;
函数的调用:

Oracle数据库学习笔记四

包的使用:

Oracle数据库学习笔记四

Oracle数据库学习笔记四

Oracle数据库学习笔记四

触发器的使用:

Oracle数据库学习笔记四

参照变量:

Oracle数据库学习笔记四

Oracle数据库学习笔记四

1.请使用pl/sql编写一个块,可以输入部门号,并显示该部门所有员工的姓名和他的工资 declare --定义游标
type sp_emp_cursor is ref cursor;

--定义一个游标变量
test_cursor sp_emp_cursor;

--定义变量
v_name emp.ename%type;v_sal emp.sal%type;

begin --执行 --把test_cursor 和一个select 结合
ope test_cursor for select ename, sal from emp where deptno = &no;

--循环取出
loop    fetch test_cursor into v_name,v_sal;    --判断是否test_cursor 为空    exit when test_cursor%notfound;    dbms_output.put_line('名字:' || v_name ||‘薪水:’||v_sal);end loop;end;

pl/sql进阶 编写分页过程 案例: --book表
create table book bookid numberbookname varchar250),publishHouse varchar250));

--编写过程 in 表示这是一个输入参数 out 表示这是一个输出参数
create or replace procedure sp_pro7(spBookId in numberspBookname in varchar2 sppublishHouse in varchar2) isbegininsert into book valusspBookId spBooknamesppublishHouse  );end

在java中调用
package com.zm;import java.sql.CallableStatement;import java.sql.Connection;import java.sql.DriverManager;public class Test1 {    public static void main(String[] args) {        try {            //1.加载驱动            class.forName("oracle.jdbc.driver.OracleDriver");            Connection ct = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:MYORA1","scott","m123");            //2.创建CallableStatement            CallableStatement cs = ct.prepareCall("{call sp_pro7(?,?,?)}");            //给?赋值            cs.setInt(1, 10);            cs.setString(2, "天龙八部");            cs.setString(3, "人名出版社");            //执行            cs.execute();                    } catch (Exception e) {            // TODO: handle exception        }finally{            cs.close();            ct.close();        }    }}