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 mytest(name varchar2(30),password varchar2(30));
2.创建过程
create or replace procedure sq_prol is
begin
insert into mytest(’liheng‘,’123‘);
end;
如何查看错误信息 show error; 如何使用过程:
- exec 过程名(参数值1,参数值2)
- call 过程名(参数值1,参数值2)
函数的案例 输入雇员的姓名,返回该雇员的年薪
create function sp_fun2(spName varchar2) return
number is yearSal number(7,2);
begin
select sal*12+nvl(comm,0)*12 into yearSal from emp where ename=spName;
return yearSal;
end;
函数的调用:
包的使用:
触发器的使用:
参照变量:
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 number,bookname varchar2(50),publishHouse varchar2(50));
--编写过程 in 表示这是一个输入参数 out 表示这是一个输出参数
create or replace procedure sp_pro7(spBookId in number,spBookname in varchar2, sppublishHouse in varchar2) is
begin
insert into book valus(spBookId ,spBookname,sppublishHouse );
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();
}
}
}