SQL 存储过程学习(2)_MySQL数据库_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

SQL 存储过程学习(2)

作者:黑客防线网安MYSQL维护基地 来源:黑客防线网安MYSQL维护基地 浏览次数:0

本篇关键词:学习过程存储触发
黑客防线网安网讯:  以下为引用的内容:  Product  产品编号 产品名称 客户订数  001    钢笔   30  002    毛笔    50  003          铅笔    100  order  产品编号 客户名 客...

  以下为引用的内容:

  Product

  产品编号 产品名称 客户订数

  001    钢笔   30

  002    毛笔    50

  003          铅笔    100

  order

  产品编号 客户名 客户订金

  001   南山区  $30

  002   罗湖区  $50

  003   宝安区  $4

  请实现按编号为连接条件,将两个表连接成一个临时表,该表只含编号.产品名.客户名.订金.总金额,

  总金额=订金*订数,临时表放在存储过程中
  代码如下:
  Create proc temp_sale
  as
  select a.产品编号,a.产品名称,b.客户名,b.客户订金,a.客户订数* b.客户订金 as总金额
  into #temptable from Product a inner join order b on a.产品编号=b.产品编号
  if @@error=0
  print 'Good'
  else
  print 'Fail'
  go


  三、SQL存储过程学习:存储过程的调用

  调用带参数存储过程的几种方式

  1) 这也是最简单的方法,两个输入参数无返回值,用于Insert,Update,Delete操作较多

  以下为引用的内容:

  conn.Execute "procname varvalue1,varvalue2"

  2) 如果要返回 Recordset 集:

  以下为引用的内容:

  set rs = server.createobject("adodb.recordset")

  rs.Open "Exec procname varvalue1, varvalue2",conn

  3) 以上两种方法都不能有返回值(Recordset除外),如果要得到返回值,需要用Command的方法

  首先说明,返回值有两种。一种是在存储过程中直接return一个值,就象C和VB的函数返回值那样;另一种是可以返回多个值,存储这些值的变量名称需要在调用参数中先行指定。

  四、特殊的存储过程-触发器

  1.触发器的概念及作用

  触发器是一种特殊类型的存储过程,它不同于我们前面介绍过的存储过程。触发器主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名字而被直接调用。当对某一表进行诸如Update、 Insert、 Delete 这些操作时,SQL Server 就会自动执行触发器所定义的SQL 语句,从而确保对数据的处理必须符合由这些SQL 语句所定义的规则。
  触发器的主要作用就是其能够实现由主键和外键所不能保证的复杂的参照完整性和数据的一致性。除此之外,触发器还有其它许多不同的功能:
  (1) 强化约束(Enforce restriction)

  触发器能够实现比CHECK 语句更为复杂的约束。

  (2) 跟踪变化Auditing changes

  触发器可以侦测数据库内的操作,从而不允许数据库中未经许可的指定更新和变化。

  (3) 级联运行(Cascaded operation)。

  触发器可以侦测数据库内的操作,并自动地级联影响整个数据库的各项内容。例如,某个表上的触发器中包含有对另外一个表的数据操作(如删除,更新,插入)而该操作又导致该表上触发器被触发。

  (4) 存储过程的调用(Stored procedure invocation)。

  为了响应数据库更新触,发器可以调用一个或多个存储过程,甚至可以通过外部过程的调用而在DBMS( 数据库管理系统)本身之外进行操作。

  由此可见,触发器可以解决高级形式的业务规则或复杂行为限制以及实现定制记录等一些方面的问题。例如,触发器能够找出某一表在数据修改前后状态发生的差异,并根据这种差异执行一定的处理。此外一个表的同一类型(Insert、 Update、 Delete)的多个触发器能够对同一种数据操作采取多种不同的处理。

  总体而言,触发器性能通常比较低。当运行触发器时,系统处理的大部分时间花费在参照其它表的这一处理上,因为这些表既不在内存中也不在数据库设备上,而删除表和插入表总是位于内存中。可见触发器所参照的其它表的位置决定了操作要花费的时间长短。

  2.触发器的种类

  SQL Server 2000 支持两种类型的触发器:AFTER 触发器和INSTEAD OF 触发器。其中AFTER 触发器即为SQL Server 2000 版本以前所介绍的触发器。该类型触发器要求只有执行某一操作(Insert Update Delete) 之后,触发器才被触发,且只能在表上定义。可以为针对表的同一操作定义多个触发器。对于AFTER 触发器,可以定义哪一个触发器被最先触发,哪一个被最后触发,通常使用系统过程sp_settriggerorder 来完成此任务。

  INSTEAD OF 触发器表示并不执行其所定义的操作(Insert、 Update、 Delete),而仅是执行触发器本身。既可在表上定义INSTEAD OF 触发器,也可以在视图上定义INSTEAD OF 触发器,但对同一操作只能定义一个INSTEAD OF 触发器。

 

    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-8883-1.html
网站维护教程更新时间:2012-03-20 05:02:24  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer