Sqlserver中存储过程,触发器,自定义函数

Sqlserver中存储过程,触发器,自定义函数:

1.

触发器:是针对数据库表或数据库的特殊存储过程,在某些行为发生的时候就会被激活
 触发器的分类:
 DML触发器:发生在数据操作语言执行时触发执行的存储过程,Insert,Update,Delete
 After触发器:记录被改变之后激活执行
 Instead of触发器:记录被改变之前激活执行。
 DDL触发器:响应数据定义语言执行时触发执行的存储过程,一般用于执行数据库中的管理任务
 审核和规范数据库的操作;
 防止数据表结构被更改或删除

2.

http://www.2cto.com/database/201302/190839.html

触发器中的临时表:

  Inserted

  存放进行insert和update 操作后的数据

  Deleted

  存放进行delete 和update操作前的数据

  1 --创建触发器
  2 go
  3 Create  trigger  User_OnUpdate
  4      On  stuinfo
  5      for  Update
  6 As
  7      declare  @msg nvarchar(50)
  8      --@msg记录修改情况
  9 select  @msg = N ‘姓名从"‘  + Deleted.stuName  + N ‘"修改为"‘  + Inserted.stuName  +  ‘"‘  from Inserted,Deleted
 10 --插入日志表
 11      insert  into  [LOG](MSG) values (@msg)
 12      --删除触发器
 13 drop  trigger  User_OnUpdate
 14
 15 -----------------存储过程语法----------------------
 16 --创建带output参数的存储过程
 17 go
 18 CREATE  PROCEDURE  PR_Sum
 19      @a  int ,
 20      @b  int ,
 21      @ sumq int output
 22 AS
 23 BEGIN
 24      set  @ sum =@a+@b
 25 END
 26
 27 --创建Return返回值存储过程
 28 go
 29 CREATE  PROCEDURE  PR_Sum2
 30      @a  int ,
 31      @b  int
 32 AS
 33 BEGIN
 34      Return  @a+@b
 35 END
 36
 37 --执行存储过程获取output型返回值
 38 declare  @mysum  int
 39 execute  PR_Sum 1,2,@mysum  output
 40 print @mysum
 41
 42 --执行存储过程获取Return型返回值
 43 declare  @mysum2  int
 44 execute  @mysum2= PR_Sum2 1,2
 45 print @mysum2---
 46
 47 -------------------自定义函数-----------------------
 48 --函数的分类:
 49     1)标量值函数
 50     2)表值函数
 51         a:内联表值函数
 52         b:多语句表值函数
 53     3)系统函数
 54
 55 --新建标量值函数
 56 create  function  FUNC_Sum1
 57 (
 58      @a  int ,
 59      @b  int
 60 )
 61 returns  int
 62 as
 63 begin
 64      return  @a+@b
 65 end
 66
 67 --新建内联表值函数
 68 create  function  FUNC_UserTab_1
 69 (
 70      @myId  int
 71 )
 72 returns  table
 73 as
 74 return  ( select  *  from  ST_User  where  ID<@myId)
 75
 76 --新建多语句表值函数
 77 create  function  FUNC_UserTab_2
 78 (
 79      @myId  int
 80 )
 81 returns  @t  table
 82 (
 83      [ID] [ int ]  NOT  NULL ,
 84      [Oid] [ int ]  NOT  NULL ,
 85      [Login] [nvarchar](50)  NOT  NULL ,
 86      [Rtx] [nvarchar](4)  NOT  NULL ,
 87      [ Name ] [nvarchar](5)  NOT  NULL ,
 88      [ Password ] [nvarchar]( max )  NULL ,
 89      [State] [nvarchar](8)  NOT  NULL
 90 )
 91 as
 92 begin
 93      insert  into  @t  select  *  from  ST_User  where  ID<@myId
 94      return
 95 end
 96
 97 --调用表值函数
 98 select  *  from  dbo.FUNC_UserTab_1(15)
 99 --调用标量值函数
100 declare  @s  int
101 set  @s=dbo.FUNC_Sum1(100,50)
102 print @s
103
104 --删除标量值函数
105 drop  function  FUNC_Sum1
106
107 -------------------自定义函数与存储过程的区别--------------------
108 --自定义函数:
109   1. 可以返回表变量
110   2. 限制颇多,包括
111     不能使用output参数;
112     不能用临时表;
113     函数内部的操作不能影响到外部环境;
114     不能通过select返回结果集;
115     不能update,delete,数据库表;
116   3. 必须return 一个标量值或表变量
117   自定义函数一般用在复用度高,功能简单单一,争对性强的地方。
118 --存储过程
119   1. 不能返回表变量
120   2. 限制少,可以执行对数据库表的操作,可以返回数据集
121   3. 可以return一个标量值,也可以省略return
122    存储过程一般用在实现复杂的功能,数据操纵方面。
123  
时间: 2024-12-21 04:11:36

Sqlserver中存储过程,触发器,自定义函数的相关文章

SQL中存储过程和自定义函数的区别(转载)

存储过程:     存储过程可以使得对数据库的管理.以及显示关于数据库及其用户信息的工作容易得多.存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理.存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量.有条件执行以及其它强大的编程功能.存储过程可包含程序流.逻辑以及对数据库的查询.它们可以接受参数.输出参数.返回单个或多个结果集以及返回值. 可以出于任何使用 SQL 语句的目的来使用存储过程,它具有以下优点: 1.可以在单个存储过程中执

SQL中存储过程和自定义函数的区别

存储过程:     存储过程可以使得对数据库的管理.以及显示关于数据库及其用户信息的工作容易得多.存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理.存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量.有条件执行以及其它强大的编程功能.存储过程可包含程序流.逻辑以及对数据库的查询.它们可以接受参数.输出参数.返回单个或多个结果集以及返回值. 可以出于任何使用 SQL 语句的目的来使用存储过程,它具有以下优点: 1.可以在单个存储过程中执

SQL中存储过程与自定义函数的区别

存储过程 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它.存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程. 优点 ①重复使用.存储过程可以重复使用,从而可以减少数据库开发人员的工作量. ②提高性能.存储过程在创建的时候在进行了编译,将来使用的时候不再重新翻译.一般的SQL语句每

Sqlserver中存储过程,触发器,自定义函数(一)

Sqlserver中存储过程,触发器,自定义函数 1.存储过程有关内容存储过程的定义:存储过程的分类:存储过程的创建,修改,执行:存储过程中参数的传递,返回与接收:存储过程的返回值:存储过程使用游标. 1.1存储过程的定义:存放在服务器上预先编译好的sql语句,可以给存储过程传递参数,也可以从存储过程返回值. 优点:提供了安全访问机制,比如可以将不同的存储过程的执行权限赋予权限不同的用户:改进了执行性能,因为存储过程是预编译的:减少了网络流量,因为在调用存储过程时,传递的字符串很短,没有很长的s

Sqlserver中存储过程,触发器,自定义函数(二)

Sqlserver中存储过程,触发器,自定义函数: 自定义函数:1.函数类型:2.函数的参数和返回值: 1.函数类型:标量值函数,返回的是一个标量值表值函数:内联表值函数:多语句表值函数. 标量值函数: 1 go 2 create function SumOrders(@职工号 varchar(20))--指定参数名,和返回类型 stuNo 3 returns int --指定返回类型 4 begin 5 declare @订单总数 int --学生人数sumstudent 6 select @

转:存储过程和自定义函数的区别

首先来看一下存储过程和自定义函数的概念 一. 什么是存储过程? 存储过程可以使得对数据库的管理.以及显示关于数据库及其用户信息的工作容易得多.存储过程是SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理. 存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量.有条件执行以及其它强大的编程功能. 存储过程可包含程序流.逻辑以及对数据库的查询.它们可以接受参数.输出参数. 返回单个或多个结果集以及返回值. 可以出于任何使用SQL 语句的目的来使用存储过程

存储过程和自定义函数的区别

1: 1)存储过程,功能强大,可以执行包括修改表等一系列数据库操作,也可以创建为 SQL Server 启动时自动运行的存储过程. 自定义函数,用户定义函数不能用于执行一组修改全局数据库状态的操作. 2)存储过程,可以使用非确定函数. 自定义函数,不允许在用户定义函数主体中内置非确定函数. 3)存储过程,主要是返回一个int状态结果,也可返回记录集. 自定义函数,可以返回表变量. 关于这个,很容易糊涂.存储过程,可以使用这样的形式来返回N多的结果: create procedure sp1  a

MySQL存储过程/存储过程与自定义函数的区别

语法: 创建存储过程: CREATE [definer = {user|current_user}] PROCEDURE sp_name ([ proc_parameter [,proc_parameter ...]]) [ characteristics..] routime_body 其中: proc_parameter : [IN|OUT|INOUT] parameter_name type 其中IN表示输入参数,OUT表示输出参数,INOUT表示既可以输入也可以输出:param_name

SqlServer中存储过程 returnC#代码处理以及对应的MySQL如何改写

一.SqlServer 中 1. 创建表 create table testuser( id int, --primary key, names varchar(50), address varchar(50), paw varchar(50) ) 2.创建存储过程 create proc testp12(@id int ,@names varchar(50),@address varchar(50),@paw varchar(50)) as begin declare @maxid int i