Oracle创建视图、序列、触发器、函数、存储过程、创建包

  • 视图

      创建视图是通过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);

猜你喜欢

转载自blog.csdn.net/zdlulu/article/details/83273470