zoukankan      html  css  js  c++  java
  • 存储过程与触发器面试

    转:原文:https://blog.csdn.net/weixin_44100795/article/details/85562889 

    1.存储过程和函数

    存储过程重在处理数据,函数可以返回值。
    (1)存储过程是procedure用户定义的一系列sql语句的集合,涉及特定表或其他对象的任务,用户可以调用存储过程。
    (2)函数通常是数据库已定义的方法,它接收参数并返回某种类型的值并且不涉及特定用户表。
    (3)可以理解函数是存储过程的一种,都是预编译的(块语句每次运行都会编译 存储过程块 一次编译多次运行 效率更高)
    plsql块语句:
    Begin
    End
    存储过程块
    Create procedure prg_add()
    As
    Begin
    End;
    (4)函数可以没有参数,但是一定要有一个返回值,存储过程可以没有参数,不需要返回值。
    (5)函数return返回值没有返回参数模式,存储过程通过out参数返回值,如果需要返回多个参数则建议使用存储过程(函数oracle 在函数可以使用in和out mysql不能使用out)
    (6)在sql数据操纵(DML)语句中只能调用函数而不能调用存储过程

    2.存储过程的概念,优点(或特点),写一个简单的存储过程

    存储过程:是一组为了完成特定功能的SQL语句集,利用SQL Server所提供的T-SQL语言所编写的程序,经编译后存储在数据库中。
    优点:
    (1)执行速度快,存储过程只在创建时进行编译,以后每次执行不需要再重新编译,一般sql语句每执行一次就编译一次
    (2)存储过程可重复使用
    (3)安全性高(可设定只有某些用户才具有对指定存储过程的使用权)
    (4)当对数据库进行复杂操作时,可完成复杂的判断和比较复杂的运算,可用存储过程封装起来
    (5)易于维护和集中控制,当企业规则变化时在服务器中改变存储过程即可。无需修改 应用程序。
    简单的存储过程:
    create proc select_query @year int
    as
    select * from tmp where year=@year

    3.触发器

    (1)触发器:触发器可以看成是一个特殊的存储过程,存储过程是要显示调用去完成,而触发器可以自动完成。比如:当数据库中的表发生增删改操作时,对应的触发器就可以执行对应的PL/SQL语句块
    (2)作用:维护表的完整性,记录表的修改来审计表的相关信息
    分为:
    DML触发器:当数据库服务器中发生数据操作语言事件时执行的存储过程,分为:After触发器和instead of触发器
    DDL触发器:特殊的触发器,在响应数据定义语言(DDL)语句时触发,一般用于数据库中执行管理任务。DDL触发器是响应create、after、或drop开头的语句而激活
    触发器用处还是很多的,比如校内网、开心网、Facebook,你发一个日志,自动通知好友,其实就是在增加日志时做一个后触发,再向通知表中写入条目。因为触发器效率高
    ---------------------

  • 相关阅读:
    【WCF】授权策略详解
    【WCF】基址与默认终结点
    【Win 10 应用开发】手写识别
    【.net 深呼吸】连接Access数据库应注意的几点
    【WCF】自定义地址头的筛选器
    【Win 10 应用开发】InkToolBar——涂鸦如此简单
    【WCF】为终结点地址应用地址头
    【.net 深呼吸】EqualityComparer——自定义相等比较
    【.net 深呼吸】使用二进制格式来压缩XML文档
    PHP根据传入的经纬度,和距离范围,返回所有在距离范围内的经纬度的取值范围
  • 原文地址:https://www.cnblogs.com/fengli9998/p/10223298.html
Copyright © 2011-2022 走看看