zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    CTFHub-Web-Web前置技能-HTTP协议-响应包源代码详解
    BurpSuite环境安装及设置
    i2 Analyst’s Notebook 9学习笔记之入门、基本概念和数据接口
    Python 练习题:用索引取出LIST中的值
    python 练习题:小明的成绩从去年的72分提升到了今年的85分,请计算小明成绩提升的百分点
    zabbix4.0 本地安装详解及步骤
    CentOS 7 安装 mysql 5.7.27 for zabbix
    win7系统 右击任务栏 资源管理器 弹出菜单“已固定”和“最近”项目不显示故障处理
    CentOS 7 新系统 手动配置网络 简要步骤
    CentOS7 firewalld防火墙 启动 关闭 禁用 添加删除规则等 常用命令
  • 原文地址:https://www.cnblogs.com/shujk/p/12601477.html
Copyright © 2011-2022 走看看