可以用在存储过程的SQL语句主要有以下类型:
1、 无返回结果语句,如:INSERT,UPDATE,DROP, DELETE等
2、
select语句返回单行变量并可传给本地变量(select ..into)
3、
返回多行结果集的select语句,并可使用游标循环处理
注意,存储过程返回的多行结果集,可以被客户端程序(如php)所接收,但要在一个存储过程中接收另一个存储过程的结果集是不可能的,一般解决办法是存入临时表供其它过程共用
4、
prepare语句 以下主要讲述游标及prepare部分 游标
定义 DECLARE
cursor_name CURSOR FOR SELECT_statement; 游标操作
OPEN
打开游标
OPEN cursor_name;
FETCH
获取游标当前指针的记录,并传给指定变量列表,注意变量数必须与游标返回的字段数一致,要获得多行数据,使用循环语句去执行FETCH
FETCH
cursor_name INTO variable list; CLOSE关闭游标 CLOSE cursor_name ;
完整例子:
/*定义游标*/
DECLARE dept_csr CURSOR FOR SELECT department_id,department_name, location
FROM departments;
/*错误处理*/
DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_departments=1;
SET no_more_departments=0;
OPEN dept_csr;/*打开游标*/
REPEAT
/*获得结果*/
FETCH dept_csr INTO l_department_id,l_department_name,l_location;
UNTIL no_more_departments
END REPEAT;
CLOSE dept_csr; /*关闭游标*/
SET
no_more_departments=0;
注意:mysql的游标是向前只读的,也就是说,你只能顺序地从开始往后读取结果集,不能从后往前,也不能直接跳到中间的记录.
Prepare语句 语法
PREPARE statement_name FROM sql_text /*定义*/
EXECUTE statement_name [USING variable [,variable...]] /*执行预处理语句*/
DEALLOCATE PREPARE statement_name /*删除定义*/
例
mysql> PREPARE
prod_insert_stmt FROM "INSERT INTO product_codes VALUES(?,?)";
mysql> SET
@code='QB';
mysql> SET @name='MySQL Query Browser';
mysql> EXECUTE
prod_insert_stmt USING @code,@name;
mysql> SET @name='MySQL
Administrator';
mysql> EXECUTE prod_insert_stmt USING
@code,@name;
mysql> DEALLOCATE PREPARE prod_insert_stmt;
分享到:
相关推荐
sql语句拼接+游标技术sql语句拼接+游标技术sql语句拼接+游标技术sql语句拼接+游标技术sql语句拼接+游标技术sql语句拼接+游标技术sql语句拼接+游标技术sql语句拼接+游标技术
详细讲解了mysql中游标的使用方法,希望能对各位有所帮助。
本资源结合实例实现一个复杂的存储过程,存储过程中有用到游标、临时表、循环、递归等知识,sql文件附有实例数据表创建的sql语句。
Database Principle and Application 第八章 数据库编程 第八章 数据库编程 8.1 嵌入式SQL 8.2 存储过程 8.3 ODBC编程 8.4 小结 8.1 嵌入式SQL 这两种方式细节上有差别,在程序设计的环境下, SQL语句要做某些必要的...
本文实例讲述了mysql存储过程之游标(DECLARE)原理与用法。分享给大家供大家参考,具体如下: 我们在处理存储过程中的结果集时,可以使用游标,因为游标允许我们迭代查询返回的一组行,并相应地处理每行。mysql的...
1.基于图书馆管理系统的mysql语句的基本增删查改范例 2.调用和创建存储过程基本例子 3.调用游标和多表连接范例 4.实现数据库备份范例
本文实例讲述了MySQL存储过程中使用WHILE循环语句的方法。分享给大家供大家参考。具体如下: mysql> mysql> delimiter $$ mysql> mysql> CREATE PROCEDURE myProc() -> BEGIN -> -> DECLARE i int; -> SET i=1;...
[mysql游标的用法及作用] 例子: 当前有三张表A、B、C其中A和B是一对多关系,B和C是一对多关系,现在需要将B中A表的主键存到C中; 常规思路就是将B中查询出来然后通过一个update语句来更新C表就可以了,但是B表中有...
在Oracle中,触发器是一种特殊的存储过程,也是由一组sql语句以及一些业务逻辑代码组成的。数据库可以通过增、删、改来触发触发器。 (2)触发器的基本写法 create or replace trigger tri_adddept AFTER INSERT ...
一、概述 本章节介绍使用游标来批量进行表操作,包括批量添加索引、批量添加字段等。...理解MySQL存储过程和函数://www.jb51.net/article/81381.htm 二、正文 1、声明光标 DECLARE cursor_name CURSOR FOR se
本文实例讲述了mysql游标的原理与用法。分享给大家供大家参考,具体如下: 本文内容: 什么是游标 创建游标 使用游标 首发日期:2018-04-18 什么是游标: 如果你前面看过mysql函数,会发现无法使用返回多行...
通过SQL 查询分析器,显示比较:我的结论是: ...分页方案三:(利用SQL的游标存储过程分页) 效率最差,但是最为通用 SELECT u.username FROM `user` u join contact_info c on (u.id=c.user_id) and c.address='123';
存储函数不同于存储过程,它有返回值,需要有RETURN语句 输入任意三个数,结果输出它们的最小值 DELIMITER $$ ## 创建存储函数smin CREATE FUNCTION `sj`.`smin`(i INT,j INT,k INT) RETURNS INT BEGIN DECLARE
数据库对象表时存储和操作数据的逻辑结构,而数据库对象存储过程和函数,则是用来实现将一组关于表操作的sql语句当作一个整体来执行。在数据库系统中,当调用存储过程和函数时,则会执行这些对象中所设置的sql语句组...
存储过程是一组为了完成某项特定功能的sql语句集,其实质上就是一段存储在数据库中的代码,他可以由声明式的sql语句(如CREATE,UPDATE,SELECT等语句)和过程式sql语句(如IF…THEN…ELSE控制结构语句)组成。存储...
1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。 2.当对数据库进行复杂操作时(如对多个表进行Update,Insert,...
oracl函数 事物 游标 存储 mysql分页 sql语句拼写 pl/sql
drop PROCEDURE if exists my_procedure; create PROCEDURE my_procedure(in my_id int,out my_name... 您可能感兴趣的文章:Mysql存储过程循环内嵌套使用游标示例代码MySQL 存储过程中执行动态SQL语句的方法Mysql存储过
SQL语句的执⾏基本都在游标上进⾏ cursor.executeXXX⽅法执⾏SQL语句,cursor.fetchXXX获取查询结果等 调⽤close⽅法关闭游标cursor和数据库连接 import pymssql # server 数据库服务器名称或IP # user ⽤户名 # ...
│ 2_MySQL游标讲解.mp4 │ 3_MySQL触发器.mp4 │ 4_MySQL触发器课堂强化练习.mp4 │ 5_MySQL数字和时间类型.mp4 │ 6_MySQL字符串类型.mp4 │ 7_MySQL存储引擎.mp4 │ 8_MySQL第三范式设计讲解.mp4 │ 9_MySQL...