用户系统权限:
create session(创建会话) //用户登录系统至少所需要的权限
create table(创建表)
create sequence(创建序列)
create view(创建视图)
create procedure(创建过程)
创建用户:create user 用户名 identified by 密码
修改表空间大小:alter user 用户名 quota 大小(5M) on users
创建角色:create role 角色名
给予权限:grant create session to 角色名
将角色赋予用户:grant 角色名 to 用户名
分配对象权限(查询):grant select on 需要查询的表名 to 需要权限的表名 with grant option //使其同样具有分配权限的权利
分配表中列的权限(更新):grant update on 需要查询的表名.列 to 需要权限的表名 //to public 为数据库中所有用户分配权限
收回权限:revoke select on departments from system
总结:
set操作符:
exists:
变量记录类型等的声明:
注意:变量赋值用:=
声明一个记录类型
declare
type 记录类型名 is record(
变量名 类型(employee.salary&type),
.............................
)
声明一个记录类型的变量:
变量名 记录类型名
begin
select salary,employee_id,email into 记录类型变量
from employee
dbms_output.put_line(变量.字段);
end
定义一个变量,其数据类型与已经定义的某个数据变量的类型相同,或者与数据库表的某个列的数据类型相同,这时可以使用%TYPE。
使用%TYPE特性的优点在于:
●所引 用的数据库列的数据类型啊以不必知道:
●所引 用的数据库列的数据类型可以实时改变。
if语句:
case语句:
循环语句:
goto语句:需要自定义一个标签
游标:
定义游标:cursor 游标名 is select salary from employee where department_id=80
begin
打开游标:open 游标名
提取游标:fetch 游标名 into 变量;
while 游标名%found loop
dbms.output.put_line('salart:'||变量)
end loop
关闭游标:close 游标名
end
游标属性:
%found
布尔型属性,当最近一次读记录时成功返回,则值为TRUE:
%NOTFOUND
布尔型属性,与%FOUND 相反;
%ISOPEN
布尔型属性,当游标已打开时返回TRUE;
%ROWCOUNT
数字型属性,返回已从游标中读取的记录数。
带参数的游标:
定义基数变量:
隐式游标:
异常处理:
1.预定义( Predefined )错误
ORACLE预定义的异常情况大约有24个。对这种异常情况的处理,无需在程序中定义,由ORACLE自动将其引发。
2.非预定义( Predefined )错误
即其他标准的ORACLE错误。对这种异常情况的处理,需要用户在程序中定义,然后由ORACLE自动将其引发。
用pragma exception_init(异常名,异常号)进行关联
3.用户定义(User_ _define) 错误
程序执行过程中,出现编程人员认为的非正常情况。对这种异常情况的处理,需要用户在程序中定义,然后显式地在程序中将其引发。
raise 异常名 抛出异常
存储函数:
调用函数:
SELECT F_MSG('张力','护肤水') AS"总额" FROM DUAL;
存储过程:
执行:
触发器:
:old,:new: :旧数据/新数据。