Oracle数据库学习笔记四
来源:互联网 发布:java遍历map哪个速度快 编辑:程序博客网 时间:2024/05/22 01:44
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();
}
}
}
0 0
- Oracle数据库学习笔记四
- oracle数据库学习笔记(四)
- Oracle数据库学习<四>
- oracle学习笔记(四)
- oracle学习笔记四
- oracle 学习笔记四
- oracle学习笔记四
- oracle学习笔记(四)
- Oracle学习笔记(四)
- Oracle学习笔记(四)
- 学习数据库笔记四
- ORACLE学习笔记(四)——数据库的访问
- oracle数据库学习笔记
- Oracle数据库学习笔记
- Oracle数据库学习笔记
- Oracle数据库学习笔记
- Oracle数据库学习笔记
- oracle数据库学习笔记
- varStatus属性常用参数总结
- 通过route路由来调试接口所遇到的问题解决方法
- 动手编写 Mockito
- win同时安装两台MySql进程,Mysql主从复制搭建、主主复制文档
- 初识Struts2
- Oracle数据库学习笔记四
- window.location 对象所包含的属性
- 详解shell语法检查模式
- 判断移动电话号码格式是否正确
- 一款优雅的Jquery网页弹幕插件,各种用途
- 应用之星带你玩转H5页面和app开发,不懂技术的看过来
- python的flask框架连接mysql数据库
- MySQL存储过程的编写与使用
- Android 中AIDL的使用与理解