mysql存储过程如何执行

嗯...存储过程...我2 02 2 年还在用这个...
创建对了...是的...DELIMITER要记住...之前我混淆了...我把过程体中的分号作为语句的结尾...结果出错...很烦人...
sql 分隔符 // 创建过程 get_customer_orders(IN customer_id INT) 开始 从订单中选择,其中 customer_id = customer_id; 结束 // DELIMITER ;
这个IN参数...是传入一个客户ID...查询他的订单...简单...
调用时...是CALL get_customer_orders(1 0);这样...传入1 0...检查1 0的ID...
注意...必须传递参数...除非定义默认值...否则会报错...后来才发现...
应该考虑结果集...一些客户端工具...比如Navicat...默认情况下可能不支持多结果集...当你用SELECT调用进程时...否则就得直接改变性能...我测试过...我在2 02 2 年对比过...同样的查询...哦使用存储过程是更快...因为预编译...减少了解析...
维护很方便...把逻辑放进去...改流程...外部应用不用改...保存问题...
网络流量还需要存储更多的SQL...原始数据...传输...
安全...权限控制...对...GRANT EXECUTE ON PROCEDURE...限制谁可以调用...我授权用户的时候...不小心给了更大的权限...后来改回来了...
查看...使用SHOW PROCEDURE STATUS...或者SHOW CREATE PROCEDURE...可以看到...方便...
删除...DROPPROCEDUREIFEXISTS...这个IFEXISTS...防止错误...很好...
输出参数...OUTs...返回值...比如统计订单数...
sql 创建过程 get_order_count(IN customer_id INT, OUT Total INT) 开始 SELECT COUNT() INTO 订单总数 WHERE customer_id = customer_id; END //
调用时...必须接收...例如在MySQL命令行中...首先定义一个变量...
sql 调用 get_order_count(1 0, @count); SELECT @count;
控制流...IF和WHILE也可以用...嵌套也可以...
总之...创建→调用...顺序不能错...使用前检查...参数是否正确...结果集处理完毕...就这样...

mysql带参数的存储过程怎么调用

这就是坑。
别相信。
不要这样做。

提醒:参数用引号括起来。

如何在mysql中使用存储过程?

CREATE PROCEDURE 语句在 MySQL 中非常实用。

构建 GetCustomOrders 存储过程。
传递客户 ID 参数。
检查客户订单。

更改命令分隔符DELIMITER//。
在过程中使用分号。

使用CALL执行。
调用 GetCustomerOrders(1 2 3 )。

编辑时先删除。
DROPPROCEDURE 删除。
CREATE PROCEDURE 重建。

你自己考虑一下。