C/C++内存分配方式以及存储分区

时间:2014-04-27 21:16:59   收藏:0   阅读:351


1.存储过程


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

语法:

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


语法解析:

IN:输入参数;

OUT:输出参数;

IN OUT:即可输入也可输出的参数;

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

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

     

(2)

     例1:

                mamicode.com,码迷
      

                 mamicode.com,码迷

   过程的调用

                 mamicode.com,码迷

  例2:带两个参数

 
                  mamicode.com,码迷
       

          过程调用
                 
                 mamicode.com,码迷

      (3) 删除过程
DROP PROCEDURE test_procedure;

   2.函数

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

语法:

--函数是可以返回值的命名的 PL/SQL 子程序。 
--创建函数的语法:
  CREATE [OR REPLACE] FUNCTION 
  <function name> [(param1,param2)]
RETURN <datatype>  IS|AS 
  [local declarations]
BEGIN
  Executable Statements;
  RETURN result;
EXCEPTION
  Exception handlers;
END;

例:
                          mamicode.com,码迷


                          mamicode.com,码迷

调用函数:

                          mamicode.com,码迷



    3.程序包中的游标
     
        游标的定义分为游标规范和游标主体两部分
         在包规范中声明游标规范时必须使用 RETURN 子句指定游标的返回类型
         RETURN子句指定的数据类型可以是:
                  用 %ROWTYPE 属性引用表定义的记录类型
                  程序员定义的记录类型

例1:
     mamicode.com,码迷

调用

mamicode.com,码迷

        
例2:
     
实现增删查改:
mamicode.com,码迷



       4.触发器

(1)触发器的分类

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

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

mamicode.com,码迷

mamicode.com,码迷

测试:
mamicode.com,码迷

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



(3)行级触发器:

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

mamicode.com,码迷

1.

mamicode.com,码迷

2.效率高

 mamicode.com,码迷

 

3.效率低


mamicode.com,码迷


(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;

  

C/C++内存分配方式以及存储分区,码迷,mamicode.com

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!