`

存储过程和触发器简单学习

 
阅读更多

1.存储过程

2.触发器

3.存储过程和函数的区别

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

一、存储过程

       1.基本的语法格式

--格式和定义plsql的函数格式差不多
create or replace procedure 过程名(参数以及返回值和函数定义是一样的)
is|as   
begin      
   code;
end 过程名;

 

       2.调用

直接输入存储过程的名字();

 

 二、触发器

 

     1.基本格式

 

create or replace trigger 触发器名称
 before|after|instead of (操作前|操作后|替代)
 delete or inserte or (update (of columu)) (删除 添加 更新 of制定哪些列的跟新)
 on 表名、视图 for each row
begin
       code;
end 触发器名称;
--------------------例子-----------------------
a和b两个的表结构一样
 当a删除内容的时候触发触发器把删除的内容保存到b中
create or replace trigger del_a  
     before delete on a for each row
begin     
 insert into b values(:old.id,:old.num....);
end del_a;

 

三、存储过程和函数的区别

 

1.返回值的区别,函数有1个返回值,而存储过程是通过参数返回的,可以有多个或者没有
2.调用的区别,函数可以在查询语句中直接调用,而存储过程必须单独调用.
函数一般情况下是用来计算并返回一个计算结果而存储过程一般是用来完成特定的数据操作(比如修改、插入数据库表或执行某些DDL语句等等)

 

    多返回值

---------------------------例子-------------------------------
create or replace procedure ceshi(stu_num out number,stu_type out number)
is
begin
  select stu_num,stu_type into stu_num,stu_type from student
          where stu_id='2735';
          end ceshi;
-------------------------执行-------------------------------- 
declare
                nums number;
                cs_type number;
                begin
                  ceshi(nums,cs_type);
                  dbms_output.put_line(to_char(nums));
                  dbms_output.put_line(to_char(cs_type));
                  end;
-----------------------结果-----------------------------

 

 



 

 返回值是一个游标的例子

                                                                 方法一 系统个人游标 sys_refcursor

在自定义函数中

create function ceshi_cursor
return sys_refcursor
is
     tt sys_refcursor;
     begin
       open tt for select stu_id,stu_num from student 
                          where mod(stu_id,2)=0;
end ceshi_cursor;

 在存储过程中

create procedure     ceshi_procedure(tt_cursor out sys_refcursor)
is
begin
    open tt for select stu_id,stu_num from student 
                          where mod(stu_id,2)=0;
                          end ceshi_procedure;

                                                       方法二 包头声明包体使用

 

create package  ceshi_package
is
    type type_recode is record(p_id number,p_num number);
    type type_cursor is ref cursor return type_recode;
    function p_cursor return type_cursor;
end ceshi_package;
------------------------------------------------------------------------------------
create or replace package body ceshi_package
is
function p_cursor return type_cursor
                  as
                     result_cursor type_cursor;
                     begin
                       open result_cursor for select stu_id,stu_num from student where mod(stu_num,2)=0;
                     return result_cursor;
                     end p_cursor;
                     
                       end ceshi_package;

 

 

调用

declare
        tt_1 sys_refcursor;
        tt_id number;
        tt_num number;
        begin
          
         -- ceshi_procedure(tt_1);  过程
       --   tt_1:=ceshi_cursor;       方法
       tt_1:=ceshi_package.p_cursor;包方法
          --open tt_1;                     不用打开的
          fetch tt_1 into tt_id,tt_num;
          while tt_1%found
            loop
            dbms_output.put_line(to_char(tt_id));
            dbms_output.put(to_char(tt_num));
            fetch tt_1 into tt_id,tt_num;
            end loop;
            close tt_1;
            end;
          

 四、Sqlserver中oracle中如何判断表或者存储过程是否存在

  

Sqlserver中可以这样

====这个是用来判断存储过程是否存在的
if exists(select * from sysobjects where name='test2' and type='P')
  drop procedure test2
go

====这个使用来判断数据库的表是否存在
if exists(select * from master..sysdatabases where name='test2')
drop procedure test2
go

====
====
oracle  中如何来实现
 SELECT *
   FROM DBA_OBJECTS
  WHERE OBJECT_TYPE = 'TABLE'
    AND OWNER = UPPER('SCHEMA_NAME')
    AND OBJECT_NAME = UPPER('TABLE_NAME');
  --------------------------------------------------------------
 SELECT *
   FROM ALL_TABLES
  WHERE OWNER = UPPER('SCHEMA_NAME')
    AND TABLE_NAME = UPPER('TABLE_NAME');

 

 

  • 大小: 7.3 KB
  • 大小: 8.3 KB
分享到:
评论

相关推荐

    数据库存储过程和触发器实验

    1. **学习创建、修改和删除存储过程和触发器的语法**。 2. **理解如何在实际场景中应用它们**。 3. **掌握如何调试和优化存储过程和触发器**。 4. **提高对数据库事务管理和并发控制的理解**。 在实验文件“存储...

    存储过程和触发器PPT学习教案.pptx

    【存储过程和触发器】是数据库管理中的重要概念,它们在SQL Server中有着广泛的应用。存储过程是一组预先定义和编译好的Transact-SQL语句,可以通过参数传递数据,并可以返回状态值和参数值。存储过程有多种类型,如...

    SQL存储过程与触发器

    SQL存储过程和触发器是数据库管理系统中的重要组成部分,它们在数据操作和业务逻辑实现中扮演着关键角色。...通过深入学习和实践,你将能够熟练运用这些工具,为你的数据库解决方案增添更多的灵活性和效率。

    实验4 存储过程和触发器.docx

    在实验过程中,你不仅会学习到存储过程和触发器的基本语法,还会深化对数据库事务、约束和数据完整性的理解。同时,这也会帮助你更好地掌握SQL语言,提升你在数据库管理和开发方面的技能。在实际工作中,存储过程和...

    实验5 存储过程和触发器1

    总之,实验5旨在帮助学习者理解和掌握存储过程和触发器的基本用法,包括它们的创建、执行和删除,以及在实际场景中的应用。通过这些练习,可以加深对SQL数据库管理和编程的理解,提升数据库维护和管理的能力。

    练习利用PLSQL Developer编写和管理存储过程、存储函数和触发器等

    PLSQL Developer中存储过程、存储...在本实验中,我们学习了如何使用PLSQL Developer编写和管理存储过程、存储函数和触发器,并掌握了这些对象的基本作用和操作。这些知识点将有助于我们更好地理解和应用Oracle数据库。

    实验6数据库实验——存储过程和触发器.doc

    通过实验,学生将学习如何创建和使用存储过程和触发器,以解决实际问题。 知识点1:存储过程的概念和应用 * 存储过程是数据库中的一种程序单元,它可以接受参数、执行逻辑操作并返回结果。 * 存储过程可以提高...

    计算机软件及应用存储过程与触发器PPT学习教案.pptx

    总结来说,存储过程和触发器是数据库管理中的重要工具,它们能够帮助开发人员更高效、安全地管理和操作数据库,实现更复杂的业务逻辑和数据处理。理解并熟练掌握这两种技术对于数据库开发者和系统管理员至关重要。

    存储过程、触发器、定时器例子(oracle)

    在Oracle数据库系统中,存储过程、触发器和定时器是三个关键的数据库管理工具,它们在数据处理和业务逻辑执行中扮演着...学习并熟练掌握存储过程、触发器和定时器,能帮助你更好地设计和维护高效、稳定的数据管理系统。

    MySQL SQL高级特性-存储过程-触发器-事务

    MySQL是目前最流行的开源关系型数据库管理系统之一,它提供了...在本文中,我们学习了MySQL存储过程的定义和优点,触发器的概念,以及事务的基本原理。通过这些高级特性,我们可以开发出更稳定、高效的数据库应用程序。

    SQLSERVER实用教程- 存储过程和触发器.pdf

    存储过程和触发器是SQL Server中非常重要的组成部分,它们可以帮助开发者构建高效、安全和易于维护的应用程序。通过理解和掌握如何创建及使用这些对象,可以极大地提升数据库应用程序的功能性和性能。 以上是关于...

    实验八存储过程与触发器

    本实验旨在帮助学生深入了解存储过程和触发器的基本概念,并熟练掌握它们的创建、执行、修改及删除方法。 #### 二、实验内容与过程 ##### 存储过程 存储过程是一种预编译的SQL代码块,它被保存在数据库中,并可以...

    如何利用存储过程和触发器来管理数据库

    在数据库管理中,存储过程和触发器是两个重要的工具,它们极大地增强了数据库的功能和灵活性,同时也提升了系统的性能和数据的一致性。以下是关于这两个概念的详细介绍以及如何在实际操作中运用。 **一、存储过程**...

    存储过程及触发器实验报告.pdf

    实验的主要目的是让学生掌握存储过程的创建和使用,理解触发器的概念,并能实际应用触发器。通过实验,学生不仅加深了对数据库技术的理解,也学会了如何在实际操作中应用这些知识。虽然实验内容相对简单,主要涉及对...

    存储过程、触发器的例子.doc

    在数据库管理中,存储过程和触发器是两个重要的概念...通过学习和掌握它们,可以优化数据库性能,提高应用程序的效率和安全性。在数据库设计中,合理使用存储过程和触发器对于实现高效、灵活和安全的数据管理至关重要。

    SQL Server 数据库技术 存储过程和触发器的创建与维护PPT课件.pptx

    【SQL Server 存储过程和触发器】 存储过程是SQL Server数据库中的一种重要特性,它是一种预编译的SQL语句集合,可以被保存并多次重复执行。存储过程的使用可以带来诸多好处,例如模块化编程,使得复杂的SQL操作变...

    sql2000教程 存储过程,触发器

    在SQL Server 2000中,存储过程和触发器是两种非常重要的数据库编程和管理工具,它们在数据库系统的设计和实现中起着至关重要的作用。这篇教程将深入讲解这两个概念,帮助你理解和掌握如何在SQL Server 2000环境中...

    T-SQL语句创建存储过程和触发器[借鉴].pdf

    总结来说,通过这个实验,学习者掌握了如何使用T-SQL创建和管理存储过程以及触发器,理解了它们在数据库管理和业务逻辑实现中的作用。此外,也锻炼了解决编程问题的能力,以及团队合作和交流的重要性。

    MySQL数据库函数,触发器,存储过程

    通过深入学习和掌握MySQL的函数、触发器和存储过程,开发者能够更加高效地管理和操作数据库,解决复杂的数据处理问题,提升应用程序的性能。在实际项目中,熟练运用这些特性是数据库设计和优化的关键。通过"mysql...

    存储过程、触发器和函数实验.pdf

    通过这些实验,学习者不仅可以掌握SQL语言的基本操作,还能理解如何利用存储过程、触发器和函数来增强数据库的功能性和可控性,这对于数据库管理员和开发者来说是至关重要的。实际工作中,这些技术可以提高数据处理...

Global site tag (gtag.js) - Google Analytics