博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pl/sql(2)
阅读量:6974 次
发布时间:2019-06-27

本文共 1687 字,大约阅读时间需要 5 分钟。

1.存储过程

(1)存储过程的创建及改动

语法:

CREATE [OR REPLACE] PROCEDURE procedure_name[(parameter_name [IN | OUT | IN OUT] datatype [{(:= | DEFAULT ) defaultvalue}] [, ...])]{IS | AS}BEGINprocedure_bodyEND procedure_name;

语法解析:

IN:输入參数。

OUT:输出參数;

IN OUT:就可以输入也可输出的參数;

datatype:參数的数据类型。此处不能带精度。

:=|DEFAULT:用于设置參数的默认值。

     

(2)

     例1:
                
      
                 

   过程的调用

                 

  例2:带两个參数

 
                  
       
          过程调用
                 
                 
      (3)
 
删除过程
DROP PROCEDURE test_procedure;
 
 2.
函数

过程用来完毕一项任务,可能不返回值,也可能返回多个值,过程的调用是一条PL/SQL语句;函数包括RETURN子句,用来进行数据操作,并返回一个单独的函数值,函数的调用仅仅能在一个表达式中。

语法:
--函数是能够返回值的命名的 PL/SQL 子程序。 --创建函数的语法:  CREATE [OR REPLACE] FUNCTION   
[(param1,param2)]RETURN
IS|AS [local declarations]BEGIN Executable Statements; RETURN result;EXCEPTION Exception handlers;END;
例:
                          
                          
调用函数:
                          
    3.程序包中的游标
     
        游标的定义分为游标规范和游标主体两部分
         在包规范中声明游标规范时必须使用 RETURN 子句指定游标的返回类型
         RETURN子句指定的数据类型能够是:
                  用 %ROWTYPE 属性引用表定义的记录类型
                  程序猿定义的记录类型
例1:
     
调用
        
例2:
     
实现增删查改:
     
 4.
触发器

(1)触发器的分类

        触发器分为 DML 触发器、 INSTEAD OF 触发器、DDL 触发器和系统触发器三种类型
        DML 触发器包含行级触发器、语句级触发器
(2)触发器的功能:
                   自己主动生成数据
                   自己定义复杂的安全权限
例:

针对周六日不能进行改动数据库:

測试:
                   提供审计和日志记录
                   启用复杂的业务逻辑

(3)
行级触发器:

用触发器实现自增的主键:

1.

2.效率高

 

 

3.效率低

(4)语法解析:

INSTEAD OF:仅用于替代触发器,即event_target必须为视图,并且必须带FOR EACH ROW子句

trigger_event:触发的事件。能够是DML事件(INSERT、UPDATE、DELETE、INSERT OR UPDATE、UPDATE OF column_name),系统事件(STARTUP、SHUTDOWN等)。

event_target:即指trigger_event事件是发生在哪个对象上的。如DML事件,那么event_target应该是表名或视图名,假设是系统事件,那么event_target就应该是DATABASE或SCHEMA

FOR EACH ROW:假设带此子句。即表示该触发器是行级触发器。假设省略,则是语句级触发器。

WHEN condition :用于限制行级触发器,仅仅有满足condition条件,才会触发触发器。

(5)改动触发器的状态

触发器有ENABLED和DISABLED两种状态。

改动某个触发器的状态能够运行以下的SQL:

ALTER TRIGGER trigger_name ENABLE | DISABLE;

 

使某个表上的全部触发器有效或无效:

ALTER TABLE table_name {ENABLE | DISABLE} ALL TRIGGERS;

 

(6)删除触发器

DROP TRIGGER trigger_name;

  

你可能感兴趣的文章
mysql中order by 和limit一起使用不当会导致效率极慢的4种优化方法
查看>>
您的Docker 容器还健康吗?一条简单命令帮您找出答案 [转载]
查看>>
WPF自定义控件与样式(14)-轻量MVVM模式实践
查看>>
HDD-FAT32 ZIP-FAT32
查看>>
当iPhone用上联发科,你还会爱上它吗?
查看>>
HDOJ(HDU) 1491 Octorber 21st
查看>>
ThinkPhp学习05
查看>>
Tomcat内核之ASCII解码的表驱动模式
查看>>
isual Studio 2013编译ImageMagick---转
查看>>
消息字节——MessageBytes
查看>>
送上最新鲜的互联网行业新闻-【2015-05-08】
查看>>
iOS Swift _Nullable 与 Android 注解帮助编译时检查 - 两家好像步调开始一致一段时间了...
查看>>
OpenCL异构计算资料收集
查看>>
Linux下按照时间和大小生成新文件的程序流程及其C代码实现
查看>>
MySQL数据库移植总结
查看>>
DockOne微信分享(一三零):探究PaaS网络模型设计
查看>>
控制并发访问的三道屏障: WCF限流(Throttling)体系探秘[下篇]
查看>>
移动WEB前端开发资源整合
查看>>
[WCF REST] 解决资源并发修改的一个有效的手段:条件更新(Conditional Update)
查看>>
加密技术 加强数据私密性确保云计算安全
查看>>