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 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 numberbookname varchar250),publishHouse varchar250));

--编写过程 in 表示这是一个输入参数 out 表示这是一个输出参数
   
   
create or replace procedure sp_pro7(spBookId in numberspBookname in varchar2 sppublishHouse in varchar2) is
begin
insert 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();
        }
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半路笙歌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值