• Oracle——创建存储过程


    有个超级详细的关于存储过程的帖子:https://www.cnblogs.com/snowballed/p/6766867.html

    Oracle-存储过程(procedure、function、package、tigger)
    1、过程procedure
    (1)创建过程

    create [ or replace ] procedure 过程名称 [ ( 参数列表) ] { is | as }
    
    ----声明变量
    
    begin
    
    ----执行代码
    
    end [过程名称];
    
    例如:
    create or replace procedure myproc
    as
    
    m number;
    
    begin
    
    m:=100;
    dbms_output.put_line(m);
    
    end;

    (2)调用过程

    exec 存储过程名称 [ (参数) ]
    
    execute 存储过程名称 [ (参数) ]
    
    begin
    
    ----存储过程名称 [ (参数) ]
    
    end

    (3)删除过程

    drop procedure 过程名称 

    (4)获取过程返回值
    过程的返回值,out参数都是可以获取的

    2、函数function
    (1)创建函数

    create [ or replace ] function 函数名称 [ (参数列表) ] return 返回值类型
    
    { is | as }
    
    ----声明变量
    
    begin
    
    ----执行代码
    
    end [函数名称]; 

    (2)调用函数

    declare
    
    ----创建变量存储函数调用返回值
    
    begin
    
    ----调用函数赋值给变量
    
    end; 

    (3)删除函数

    drop function 函数名称 

    (4)获取函数返回值
    函数的返回值,out参数都是可以获取的

    注意:过程和函数的区别
    ①函数至少返回一个变量,而过程可以返回多个,也可以不返回。
    函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。
    ②函数限制比较多,比如不能用临时表,只能用表变量.还有一些函数都不可用等等.
    而过程的限制相对就比较少。
    ③对于过程来说可以返回参数,而函数只能返回值或者表对象。
    ④存储过程一般是作为一个独立的部分来执行(EXEC执行),而函数可以作为查询语句的一个部分来调用(SELECT调用),
    由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。

    3、包和包体
    (1)创建包

    create [ or replace ] package 包名称 is | as
    
    ----定义公用常量、变量、过程、函数等(不能有具体实现)
    
    end [ 包名称 ]; 

    (2)创建包体

    create [ or replace ] package body 包名称 is | as
    
    ----定义公用常量、变量、过程、函数等
    
    ----实现公用过程和函数
    
    end [ 包名称 ];

    (3)调用包

    declare
    
    ----定义变量
    
    begin
    
    ----包名.元素名称(参数)
    
    end

    (4)删除包和包体

    drop package [ body ] [ user. ] 包名

    4、触发器tigger
    (1)创建触发器

    create [or replace] tigger 触发器名 { before | after } { insert | update | delete }
    
    on 表名 ---- 数据库触发器所在的表。
    
    [for each row] ---- 对表的每一行触发器执行一次。如果没有这一选项,则只对整个表执行一次。
    
    begin
    
    ----pl/sql语句
    
    end

    (2)删除触发器

    drop tigger 触发器名称

    (3)禁用所有触发器

    ALTER SYSTEM SET "_system_trig_enabled"=false;
    

    转自:https://yq.aliyun.com/articles/675844

  • 相关阅读:
    zoj 1671 Walking Ant【简单bfs】
    hdoj 2717 Catch That Cow【bfs】
    hdoj 1010 Tempter of the Bone【dfs查找能否在规定步数时从起点到达终点】【奇偶剪枝】
    poj 1321 棋盘问题【dfs】
    [LC] 124. Binary Tree Maximum Path Sum
    [LC] 113. Path Sum II
    [LC] 112. Path Sum
    [LC] 98. Validate Binary Search Tree
    [LC] 39. Combination Sum
    [LC] 159. Longest Substring with At Most Two Distinct Characters
  • 原文地址:https://www.cnblogs.com/shujk/p/12601477.html
Copyright © 2020-2023  润新知