- 视图
创建视图是通过create or replace view+视图名+as+选择语句+with+读取权限,6个部分组成,这个视图是能查询,不能进行其它的插入删除更新等操作CREATE OR REPLACE VIEW CASE_VIEW AS SELECT * FROM CASE_INDEX_TABLE WITH
READ ONLY;
通过语句GRANT SELECT ON CASE_VIEW TO USER1;给用户USER1赋予视图的查看权限
补充权限:check option权限,没有使用过
- 序列
Oracle的序列必须是在创建表的时候就要进行创建的,Oracle没有自增的参数,只能通过序列来进行操作,序列结构
CREATE TABLE CASE_SEQ(
ID NUMBER,
COMPANY VARCHAR(30)
);
CREATE SEQUENCE SEQ_14#序列名称为SEQ_14
INCREMENT BY 1 #增长的间隔是1
START WITH 1 #从1开始
NOMAXVALUE #最大值限制,当前NOMAXVALUE是没有最大值限制
NOCYCLE #达到最大值是否进行循环nocycle和cycle
NOCACHE; #分配并存入内存中nocache和cache
插入语句:INSERT INTO CASE_SEQ VALUES(SEQ_14.nextval,'幼小衔接');
- 触发器
创建一个名为TRI_T的触发器,它的作用是在TRI_INSERT表中添加数据时,TRI_ADD表会自动给每行添加数据:
CREATE TABLE TRI_INSERT(ID NUMBER,ID_CARD VARCHAR(20),LOCATION VARCHAR(30),MULT NUMBER);
CREATE TABLE TRI_ADD(ID NUMBER,ID_CARD VARCHAR(20),LOCATION VARCHAR(30),MULT NUMBER);
CREATE or REPLACE TRIGGER TRI_T AFTER INSERT on USER_EXPORT.TRI_INSERT FOR EACH ROW
BEGIN
INSERT INTO USER_EXPORT.TRI_ADD (ID,ID_CARD,LOCATION,MULT) VALUES (:new.ID, :new.ID_CARD, :new .LOCATION, :new.MULT);
END;
- 函数
函数(输入两个值,输出大的那个值)
CREATE OR REPLACE FUNCTION CASE_FUN(para1 IN NUMBER,para2 IN NUMBER)
return number
AS
BEGIN
IF para1 > para2 THEN
return para1;
ELSE
return para2;
END IF;
END CASE_FUN;
验证函数效果:SELECT CASE_FUN(11,10) FROM dual;
- 存储过程
存储过程
CREATE OR REPLACE PROCEDURE CASE14_ALL_PRO
AS
BEGIN
dbms_output.put_line('中国HELLO WORLD');
END;
验证存储过程效果
BEGIN
CASE14_ALL_PRO;
END;
- 包
备注:创建包体和包体要分开,先创建包头,成功后才能再创建包体以及包体内的函数
创建包头
CREATE OR REPLACE package CASE14_ALL_P IS
PROCEDURE showMessage;
function myAdd(x in number,y in number) return number;
end;
包体和函数,必须是在执行完创建包头命令之后才能执行,否则会报错,这个包体包含一个myAdd的函数
包体开始
CREATE or replace package body CASE14_ALL_P is
procedure showMessage is
begin
dbms_output.put_line('创建一个简单的包');
end;
function myAdd(x in number,y in number)
return number is
mySum number:=1;
begin
mySum:=x+y;
return mySum;
end myAdd;
end;
包体结束,调用验证包,求和
declare
testSum NUMBER:=1;
begin
testSum:=CASE14_ALL_P.myAdd(10,11);
dbms_output.put_line(testSum);