
解决方案:存储过程不返回数据,但它能创建和填充另一个表。所以在存储过程运行中创建临时表。该临时表将保存存储过程中生成的结果集,在遍历游标时,用insert保存每条数据到临时表中。后续调用时可以用select语句查询临时表中的存储过程运行结果。
以下有 三种方式 使用游标创建一个存储过程,统计某一部门下的员工信息
方法一:Loop循环
调用存储过程:
方法二:While 循环
调用存储过程:
方法三:REPEAT 循环
调用存储过程:
上述三种实现方法在测试过程中遇到下述问题。
调用存储过程查询临时表输出结果时,会发现多循环了一次,像这样:
解决方法:
在遍历游标查询结果时,先判断游标的结束标志(done) 是否是为1,如果不是1,则向临时表中插入数据。
mysql中把一个查询结果当作另一个表来查询可用as关键字先将查询结果作为一个临时表,然后使用select语句查询结果集即可。例如:
SELECT UserId FROM
(
SELECT UserId
FROM OrderInfo
GROUP BY UserId HAVING SUM(Amount)>30)
AS table1
以上sql语句实现查询订单表中购买数量超过30的用户编号UserId,OrderInfo为订单表,查询结果作为临时表table1,然后从临时表中查询userid。
扩展资料
mysql中as用法介绍:用作、当成,作为;一般是重命名列名或者表名。(主要为了查询方便)
例如:
1、select column_1 as 列1,column_2 as 列2 from text as 表
解释:选择 column_1 作为 列1,column_2 作为 列2 从 text 当成 表。
2、select * from blog as B
解析:查找所有blog 表里面的数据,并把blog表格命名为 B。
$sql="select * from user" $result=$link->query($sql) $row=$result->fetch_all(MYSQLI_BOTH)//参数MYSQL_ASSOC、MYSQLI_NUM、MYSQLI_BOTH规定产生数组类型$n=0 while($n<mysqli_num_rows($result)){ echo "ID:".$row[$n]["id"]."用户名:".$row[$n]["name"]."密码:".$row[$n]["password"]."<br />" $n++
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)