数据库后台编程技术

一、存储过程

1.1、基本概念

实际上是存储在数据库中供所有用户程序调用的子程序。

好处:允许模块化程序设计;改善性能;减少网络流量;增强应用程序的安全性。

1.2.1、创建

CREATE PROCEDURE procedure_name
    @ parame_name data_type
AS
    sql语句

1.2.2、执行存储过程

EXECUTE procedure_name 参数

例:带输入参数和一个输出参数的存储过程。建立统计指定类型商品的种类数的存储过程,并将统计结果作为输出参数返回。

CREATE PROCEDURE p_GoodsCount
    @ class varchar(20), @ count int output
AS
    SELECT @ count=count(*) FROM Table_Goods a
        JOIN Table_GoodsClass b ON a.GoodsClassID = b.GoodsClassID
    WHERE GoodsClassName = @ class

执行此存储过程
DECLARE @ c int
EXEC p_GoodsCount '服装' , @ c output
PRINT @ c

1.2.3、删除存储过程

DROP PROCEDURE procedure_name

二、用户定义函数

它和存储过程类似,但是函数必须有一个RETURN子句,用于返回函数值。

SQL Server2008支持两类:标量函数和表值函数。

扫描二维码关注公众号,回复: 3392515 查看本文章

2.1.1、创建标量函数

CREATE FUNCTION function_name
    (@ parema_name data_type)
RETURNS returndata_type
AS
BEGIN
    function_body
    RETURN scalar_expression
END

2.1.2、创建内联表值函数

CREATE FUNCTION function_name(@ pareme_name data_type)
RETURNS table
AS
RETURN (select_statement)

2.2 删除

DROP FUNCTION function_name

三、触发器

3.1、基本概念

触发器是一种特殊的存储过程,它不需要用户直接调用,在对表中的数据进行UPDATE、INSERTE或DELETE操作时自动触发。

保证了业务规则和数据完整性,完成比CHECK约束更加复杂的数据约束。

在触发器中,用户执行数据的更改操作时,SQL Server 自动创建和管理着两张表:INSERTED 和 DELETED 表。

DELETED表用于存储被更改的所有行在更改前的数据(按行进行);

INSERTED表用于存储INSERT和UPDATE语句所影响的行的副本,是更改后的数据的副本。

三种类型:DML、DDL和登录触发器。

3.2、创建DML触发器

CREATE TRIGGER trigger_name
ON {table | view}
{FOR | AFTER | INSTEAD OF}
{[INSERT][,] [UPDATE][,] [DELETE]}
AS {sql_statement}

FOR | AFTER 为后触发型触发器,只有引发的SQL语句都成功执行,并且所有的约束检查也成功后,才执行。(不能在视图上定义AFTER触发器),在同一种操作上可以建立多个触发器。

INSTEAD OF 为执行触发器,也叫前触发型触发器。在同一种操作上只能建立一个触发器。

所有的建立和更改数据库以及数据库对象的语句、所有的DROP语句都不允许在触发器中使用。

3.3 删除

 DROP TRIGGER trigger_name

四、游标

游标是一个查询结果,游标机制为用户提供了在查询结果集中进行行、列定位的操作,使得人们可以深入到结果集内部进行操作。

猜你喜欢

转载自blog.csdn.net/SteveForever/article/details/82429326