mysql存储过程 pdf_mysql存储过程编程.pdf

mysql存储过程编程.pdf

e5c9c4bde452ff12029e9cc25fe93744.gif

还剩

143页未读,

继续阅读

下载文档到电脑,马上远离加班熬夜!

亲,很抱歉,此页已超出免费预览范围啦!

如果喜欢就下载吧,价低环保!

内容要点:

MySQL 存储过程编程 144 / 144 5.7.第五章结语 在这一章中我们回顾了 MySQL 提供的在存储程序中包含 SQL 的功能。下面的几种 SQL 语句可以出现在存储程序中: ? 简单内嵌非 SELECT 语句,包括 DML 语句( INSERT, DELETE, UPDATE)和 DDL 语句( CREATE, DROP, ALTER 等)可以没有任何限制的被包含在 存储程序MySQL 存储过程编程 143 / 144 5.6.SQL 错误处理:预览 MySQL 存储程序的错误处理是如此的重要,也是如此复杂,因此我们决定把该部分内容放到第六章中讨论。但是,我们在此可以提供一个快速的概览。 通常,如果一个存储程序中的 SQL 语句发生了错误,那么存储程序会停止运行并把错误返回给它的调用程序。如果你不期望发生这种事情,你必须用如下语法指定一个错误处理单元: DEMySQL 存储过程编程 142 / 144 以及其他的各种优化。 你或许不会经常用到动态 SQl 和预处理语句,但是当你创建基于用户输入或存储程序参数的 SQL 语句时,它确实可以为你节省大量的时间。当然,最后的忠告:当你创建基于用户输入的 SQL 时,你就增大了像 SQL 注入这种安全攻击的可能性,而由于存储过程使用独一无二的执行上下文 ,因此,注入式攻击事实上给存储过程的风险提出了一个MySQL 存储过程编程 141 / 144 in_contact_firstname VARCHAR(30), in_phoneno VARCHAR(10)) BEGIN DECLARE l_where_clause VARCHAR(1000) DEFAULT 'WHERE'; IF in_customer_name IS NOT NULL THEN SET l_where_clause=CMySQL 存储过程编程 140 / 144 'SET',in_column,'=',in_new_value, ' WHERE',in_where); SET @sql=l_sql; PREPARE s1 FROM @sql; EXECUTE s1; DEALLOCATE PREPARE s1; END; 我们可以称这个为首席雇员( employee ID 1)零支出程序( CEO!这回看你MySQL 存储过程编程 139 / 144 Query OK, 1 row affected (0.00 sec) mysql> DEALLOCATE PREPARE prod_insert_stmt; Query OK, 0 rows affected (0.00 sec) 现在我们注意到预处理语句减少了 SQL 语句中少数数据值改变时重新解析(预处理)的开销,并且因为允许使用 SQL语句MySQL 存储过程编程 138 / 144 5.5.使用预处理语句执行动态 SQL MySQL 支持一项功能名为服务器端预处理语句,被用于提供独立于 API 的,在反复执行过程中具备高效性和安全性的 SQL 语句预处理。从编程的角度看,预处理语句具备很大的优势,因为它允许你创建动态 SQL 调用。 我们使用 PREPARE 语句来创建预处理语句: PREPARE statement_naMySQL 存储过程编程 137 / 144 OPEN sale_csr; sale_loop:LOOP FETCH sale_csr INTO l_sale_id; IF l_last_sale THEN LEAVE sale_loop; END IF; CALL sp_issue_one_invoice(l_sale_id); END LOOP sale_loop; CLOSE sa

发表评论

暂无评论,赶快抢占沙发吧。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值