%rowtypemysql_MySQL中使⽤游标触发器的⽅法_Mysql_数
据库
游标
select检索返回的⼀组⾏称为结果集,结果集⾥的⾏都是根据你输⼊的sql语句检索出来的,如果不使⽤游标,你将没有办法得到第⼀⾏,前⼗⾏或者是下⼀⾏
下⾯是⼀些常见的游标现象和特性
下⾯是使⽤游标的步骤
DECLARE cs CURSOR
FOR
SELECT *
FROM customers
WHERE cust_email IS NULL;
本以为万事⼤吉,但却给我报错
从语法上来看没有什么问题
试着在 cs 前⾯加上@,运⾏仍然报错
还有⼈说游标只能在存储过程中使⽤,是这样吗?
现在我们来试⼀试在存储过程中使⽤游标
CREATE PROCEDURE proce1
()
BEGIN
DECLARE cur1 CURSOR
FOR
SELECT *
FROM customers
oracle游标的使用WHERE cust_id IS NULL tianyoutianyou;
END
仍然出错
再次更改
delimiter //
CREATE PROCEDURE proce1
()
BEGIN
DECLARE cur1 CURSOR
FOR
SELECT *
FROM customers
WHERE cust_id IS NULL;
END
这次我们成功地声明游标
是不是因为我们修改了分隔符然我们成功地创建游标了呢?
我们再试试
CREATE PROCEDURE proce1()
DECLARE cur1 CURSOR
FOR
SELECT *
FROM customers
WHERE cust_id IS NULL;
这样也是错误的,下⾯再试试不使⽤存储过程地语句能否成功创建游标delimiter //
DECLARE cur2 CURSOR
FOR
SELECT *
FROM orders ;
或者是这样
delimiter //
DECLARE cur2 CURSOR
FOR
SELECT *
FROM orders //
这两种也8⾏
试了这么多次,唯⼀成功的只有下⾯这种语句
delimiter //
CREATE PROCEDURE proce1()
BEGIN
DECLARE cur1 CURSOR
FOR
SELECT *
FROM customers
WHERE cust_id IS NULL;
END
下⾯我们⽤游标来检索数据
很遗憾,MySQL中没有像Oracle中 %ROWTYPE 般的数据类型,我们下⾯试着使⽤游标来检索customers表中的某⼀类数据类型
触发器
触发器时特定的存储过程,在数据库发⽣特定活动时⾃动进⾏,⼀般来说,约束的处理⽐触发器更快,因此在可能的时候,应该尽可能地使⽤约束。
到此这篇关于MySQL中使⽤游标触发器的⽅法的⽂章就介绍到这了,更多相关mysql游标触发器内容请搜索我们以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持我们!
郑重声明:本⽂版权归原作者所有,转载⽂章仅为传播更多信息之⽬的,如作者信息标记有误,请第⼀时间修改或删除,多谢。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。