精华内容
下载资源
问答
  • 本文实例讲述了oracle 存储过程、函数触发器用法。分享给大家供大家参考,具体如下:一、存储过程和存储函数存储在数据库中供所有用户程序调用的子程序叫存储过程、存储函数。创建存储过程用CREATE PROCEDURE...

    本文实例讲述了oracle 存储过程、函数和触发器用法。分享给大家供大家参考,具体如下:

    一、存储过程和存储函数

    指存储在数据库中供所有用户程序调用的子程序叫存储过程、存储函数。

    创建存储过程

    用CREATE PROCEDURE命令建立存储过程。

    语法:

    create [or replace] procedure 过程名(参数列表)

    as

    PLSQL子程序体;

    --给指定员工涨工资

    create procedure addSal(empid in number)

    as

    psal emp.sal%type;

    begin

    select sal into psal from emp where empno=empid;

    update emp set sal = sal * 1.1 where empno=empid;

    dbms_output.put_line(empid || '涨工资前' || psal || '涨工资后' || (psal * 1.1));

    end;

    调用存储过程

    --方法一

    begin

    addSal(7369);

    end;

    --方法二

    exec addSal(7369);

    存储函数

    函数为一命名的存储程序,可带参数,并返回一计算值。函数和过程的结构类似,但必须有一个return子句,用于返回函数值。函数说明要指定函数名,结果值的类型,以及参数类型等。

    创建语法:

    CREATE [OR REPLACE] FUNCTION 函数名 (参数列表)

    RETURN 函数值类型

    AS

    PLSQL子程序体;

    --查询指定员工的年收入

    create function queryEmpSal(empid in number)

    return number

    as

    psal emp.sal%type;

    pcomm emp.comm%type;

    begin

    select sal,comm into psal,pcomm from emp where empno=empid;

    return (psal*12) + nvl(pcomm,0);

    end;

    函数的调用

    declare

    psal number;

    begin

    psal:=queryEmpSal(7369);

    dbms_output.put_line(psal);

    end;

    begin

    dbms_output.put_line(queryEmpSal(7369));

    end;

    过程和函数中的IN和OUT

    一般来讲,过程和函数的区别在于函数可以有一个返回值,而过程没有返回值。

    但过程和函数都可以通过out指定一个或多个输出参数。我们可以利用out参数,在过程和函数中实现返回多个值。

    什么时候用存储过程或函数?

    原则:如果只有一个返回值,用存储函数,否则,就用存储过程。

    创建包和包体

    什么是包和包体?

    包是一组相关过程、函数、变量、常量、类型和游标等PL/SQL程序设计元素的组合。包具有面向对象设计的特点,是对这些PL/SQL程序设计元素的封装。

    包体是包定义部分的具体实现。

    包由两个部分组成:包定义和包主体。

    --包定义

    create [or replace] package 包名 as

    [公有数据类型定义]

    [公有游标声明]

    [公有变量、常量声明]

    [公有子程序声明]

    end 包名;

    --包主体

    create [or replace] package body 包名 as

    [私有数据类型定义]

    [私有变量、常量声明]

    [私有子程序声明和定义]

    [公有子程序定义]

    begin

    PL/SQL子程序体;

    end 包名;

    --创建mypackage包

    create or replace package mypackage as

    procedure total(num1 in number, num2 in number, num3 out number);

    end mypackage;

    --mypackage包体

    create or replace package body mypackage as

    --计算累加和的total过程

    procedure total(num1 in number, num2 in number, num3 out number) as

    tmp number := num1;

    begin

    if num2 < num1 then num3 := 0;

    else num3 := tmp;

    loop

    exit when tmp > num2;

    tmp := tmp + 1;

    num3 := num3 + tmp;

    end loop;

    end if;

    end total;

    end mypackage;

    (*注意:包定义和包体要分开创建)

    调用包

    declare

    num1 number;

    begin

    mypackage.total(1, 5, num1);

    dbms_output.put_line(num1);

    end;

    希望本文所述对大家Oracle数据库程序设计有所帮助。 ad51e517755f8fd6a7ec83ced4ecfaf3.png

    展开全文
  • 查看存储过程或函数的创建代码 show create procedure proc_name; show create function func-name;  查询数据库中的存储过程和函数  方法一:   select `n

    http://blog.csdn.net/luohai859/article/details/6762948


     查询数据库中的存储过程和函数 
    方法一:     
    select `name` from mysql.proc where db = 'your_db_name' and `type` = 'PROCEDURE' ;//存储过程 
    select `name` from mysql.proc where db = 'your_db_name' and `type` = 'FUNCTION';   //函数 
    方法二: 
    show procedure status; //存储过程 
    show function status;     //函数
    查看存储过程或函数的创建代码 
    show create procedure proc_name; 
    show create function func_name; 
    查看视图 
    SELECT * from information_schema.VIEWS ;  //视图 
    SELECT * from information_schema.TABLES  ; //表 
    查看触发器 
    方法一: 
    语法:SHOW TRIGGERS [FROM db_name] [LIKE expr] 
    实例:
    SHOW TRIGGERS\G ; //触发器 
    方法二: 
    对INFORMATION_SCHEMA数据库中的TRIGGERS表查询 
    SELECT * FROM triggers T WHERE trigger_name=”mytrigger” \G 


    展开全文
  • 有时候,我们想查看表,存储触发器等对象的定语语句,有以下两种方法:1. 查 all_source 表2. 用 DBMS_METADATA 包。 一. 通过有时候,我们想查看表,存储,,触发器等对象的定语语句,有以下两种方法:1. 查 all...

    有时候,我们想查看表,存储,触发器等对象的定语语句,有以下两种方法:1. 查 all_source 表2. 用 DBMS_METADATA 包。 一. 通过

    有时候,我们想查看表,存储,,触发器等对象的定语语句,有以下两种方法:

    1. 查 all_source 表

    2. 用 DBMS_METADATA 包。

    一. 通过 all_source 表

    先来确认下,通过all_source 表可以查看哪些类型的对象:

    SQL> SELECT distinct type FROM ALL_SOURCE;

    TYPE

    ------------

    PROCEDURE

    PACKAGE

    PACKAGE BODY

    LIBRARY

    TYPE BODY

    TRIGGER

    FUNCTION

    JAVA SOURCE

    TYPE

    从以上的结果我们可以看到,我们可以通过该表查询的对象.

    查看存储过程定义语句:

    SQL> SELECT text FROM ALL_SOURCE where TYPE='PROCEDURE' AND NAME ='ADDCUSTBUSS';

    TEXT

    --------------------------------------------------------------------------------

    PROCEDURE addcustbuss (

    acustid IN custbuss.custid%TYPE,

    bussname IN custbuss.businessname%TYPE,

    aopid IN custbuss.opid%TYPE,

    acreatetime IN custbuss.createtime%TYPE,

    aCustTel IN custbuss.CustTel%TYPE,--客户电话

    aContact IN custbuss.Contact%TYPE,--联系人

    aFeedback IN custbuss.Feedback%TYPE,--客户反馈

    asid OUT custbuss.ID%TYPE,

    RESULT OUT INTEGER

    )

    IS

    BEGIN

    RESULT := -1;

    SELECT getarea || TO_CHAR (idseq.NEXTVAL, 'FM0999999999')

    INTO asid

    FROM DUAL;

    INSERT INTO custbuss

    (ID, custid, businessname, opid, createtime,CustTel,Contact,Feedback

    )

    VALUES (asid, acustid, bussname, aopid, acreatetime,aCustTel,aContact,aFeedback

    );

    RESULT := 0;

    EXCEPTION

    WHEN OTHERS

    THEN

    RESULT := -1;

    END addcustbuss;

    已选择32行。

    SQL>

    查看触发器 定义语句

    SQL> SELECT text FROM ALL_SOURCE where TYPE='TRIGGER' AND NAME ='TRDB_TEAM';

    TEXT

    -----------------------------------------------------------------------------

    TRIGGER "NEWCCS".trdb_team

    BEFORE DELETE

    ON team

    REFERENCING NEW AS NEW OLD AS OLD

    FOR EACH ROW

    BEGIN

    DELETE FROM team_teamgroup_map

    WHERE teamid = :OLD.teamid;

    END trdb_team;

    已选择10行。

    方法也比较简单,修改TYPE 和 NAME 就可以。 注意要大写。

    本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

    本文系统来源:php中文网

    展开全文
  • 有时候,我们想查看表,存储触发器等对象的定语语句,有以下两种方法:1. 查 all_source 表2. 用 DBMS_METADATA 包。 一. 通过有时候,我们想查看表,存储,,触发器等对象的定语语句,有以下两种方法:1. 查 all...

    有时候,我们想查看表,存储,触发器等对象的定语语句,有以下两种方法:1. 查 all_source 表2. 用 DBMS_METADATA 包。 一. 通过

    有时候,我们想查看表,存储,,触发器等对象的定语语句,有以下两种方法:

    1. 查 all_source 表

    2. 用 DBMS_METADATA 包。

    一. 通过 all_source 表

    先来确认下,通过all_source 表可以查看哪些类型的对象:

    SQL> SELECT distinct type FROM ALL_SOURCE;

    TYPE

    ————

    PROCEDURE

    PACKAGE

    PACKAGE BODY

    LIBRARY

    TYPE BODY

    TRIGGER

    FUNCTION

    JAVA SOURCE

    TYPE

    从以上的结果我们可以看到,我们可以通过该表查询的对象.

    查看存储过程定义语句:

    SQL> SELECT text FROM ALL_SOURCE where TYPE=’PROCEDURE’ AND NAME =’ADDCUSTBUSS’;

    TEXT

    ——————————————————————————–

    PROCEDURE addcustbuss (

    acustid IN custbuss.custid%TYPE,

    bussname IN custbuss.businessname%TYPE,

    aopid IN custbuss.opid%TYPE,

    acreatetime IN custbuss.createtime%TYPE,

    aCustTel IN custbuss.CustTel%TYPE,–客户电话

    aContact IN custbuss.Contact%TYPE,–联系人

    aFeedback IN custbuss.Feedback%TYPE,–客户反馈

    asid OUT custbuss.ID%TYPE,

    RESULT OUT INTEGER

    )

    IS

    BEGIN

    RESULT := -1;

    SELECT getarea || TO_CHAR (idseq.NEXTVAL, ‘FM0999999999’)

    INTO asid

    FROM DUAL;

    INSERT INTO custbuss

    (ID, custid, businessname, opid, createtime,CustTel,Contact,Feedback

    )

    VALUES (asid, acustid, bussname, aopid, acreatetime,aCustTel,aContact,aFeedback

    );

    RESULT := 0;

    EXCEPTION

    WHEN OTHERS

    THEN

    RESULT := -1;

    END addcustbuss;

    已选择32行。

    SQL>

    查看触发器 定义语句

    SQL> SELECT text FROM ALL_SOURCE where TYPE=’TRIGGER’ AND NAME =’TRDB_TEAM’;

    TEXT

    —————————————————————————–

    TRIGGER “NEWCCS”.trdb_team

    BEFORE DELETE

    ON team

    REFERENCING NEW AS NEW OLD AS OLD

    FOR EACH ROW

    BEGIN

    DELETE FROM team_teamgroup_map

    WHERE teamid = :OLD.teamid;

    END trdb_team;

    已选择10行。

    方法也比较简单,修改TYPE 和 NAME 就可以。 注意要大写。

    展开全文
  • 存储过程函数触发器

    2013-06-06 20:15:49
    数据库系统概论存储过程、函数触发器示例
  • MySQL存储过程 存储函数 触发器 事务一、MySQL存储过程和函数1.存储过程和函数的概念2.存储过程和函数的好处3.存储过程和函数的区别4.创建存储过程5.调用存储过程6.查看存储过程7.删除存储过程8.存储过程语法8.1存储...
  • 有时候,我们想查看表,存储触发器等对象的定语语句,有以下两种方法: 1. 查 all_source 表 2. 用 DBMS_METADATA 包。  一. 通过 all_source 表 先来确认下,通过all_source 表...
  • --才触发器函数 create or replace function fun_a_triger() returns trigger as $BODY$  DECLARE   num int; sumcore numeric; rec record; orderid int; BEGIN ...
  • 存储过程,触发器,函数,很有用的哦,是培训资料里取出来的
  • 1.触发器mysql> delimiter |mysql> create trigger beforeinsertuserinfo-> before insert on userinfo-> for each row begin-> insert into userinfolog values(now(),CONCAT(new.userid,new....
  • 存储过程,存储函数触发器
  • 整理一个晚上的结果,自己有所提高,希望大家也能用得到
  • 有关SQL server存储过程、触发器函数的简要内容
  • 目录目标熟练使用MySQL存储过程、函数触发器、事件。存储过程基本的创建语法DELIMITER $$CREATEPROCEDURE `数据库名称`.`存储过程名称`(参数列表)BEGIN/*********************下面写业务。**********************/...
  • 存储过程-触发器-函数.ppt
  • PLSQL程序设计-存储过程函数触发器,本文档里面主要包括ORACLE触发器,函数,存储过程,异常管理,适合ORACLE开发人员的入门..
  • 存储过程和函数的区别 存储过程的作用是实现整体功能,开源调用...函数可以在任意位置调用,而存储过程必须要单独调用触发器存储过程的区别: 分为事前谦和事后触发器,语句级的触发器和行级的触发器,与特定表关
  • 当数据库版本不允许直接使用存储过程、函数的语法时用delimiter // 将结束符改成//用完之后再写delimiter;将结束符改回来即可,调用过程、函数用call+其名字即可返回结果delimiter //不带参数过程CREATE PROCEDURE ...
  • 函数 create   or   replace   function  getEmpNameById(inid  in  number)  return  varchar2 --此处不能指定大小   is    v_ename varchar2(10); --此处需要指定大小(或者: emp.ename%...
  • 存储过程时 总提示 表TABLE_HR 发生了变化, 触发器/函数不能读它如题目所示,定义如下:-----更改职位的存储过程:createorreplaceprocedureCgPos(posintable_hr.position%type,idintable_hr.worker_id%type)...
  • 存储函数触发器

    2019-01-21 11:31:01
    --存储函数存储过程 oracle提供了可以把pl/sql程序存储在数据库中,并可以在任何地方来运行它,这就叫做存储过程或 函数. 过程和函数的唯一区别是函数总向调用者规范数据,而过程则不返回数据 --触发器 触发器是许多...
  • 文章目录存储过程分类存储例程存储函数存储过程触发器事件游标参考文献 存储过程 分类 存储例程 本质上也是封装了一些可执行的语句,只不过它的调用方式是显示调用。存储例程可分为存储函数存储过程。两者间区别...
  • MySql错误:无法更新存储函数/触发器中的表,因为调用该存储函数/触发器的语句已使用该表我正在运行一个MySQL查询。 但是,当从表单输入添加新行时,出现此错误:Error: Can't update table 'brandnames' in stored ...
  • 几个关于的存储过程的例子,函数触发器
  • 1.-- 存储过程 – 给指定员工加100工资 create or replace procedure p1(eno scott.emp.empno%type) is begin update scott.emp set sal = sal+100 where empno = eno ; end; –调用存储过程 --调用存储过程 ...
  • 文章目录1 MySQL索引1.1 添加索引1.1.1 普通索引1.1.2 其他类型索引1.2 删除索引1.3 查看索引执行计划2 MySQL视图3 MySQL触发器4 存储过程4.1 创建存储过程4.2 变量4.3 查看并使用存储4.4 修改删除存储5 函数5.1 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,947
精华内容 3,178
关键字:

存储触发器函数