mysql - 如何正确调用带有 out 参数的 MySQL 存储过程?
问题描述
我有一个 MySQL SP 如下
DELIMITER //
CREATE PROCEDURE prc_testProc(
IN p_input varchar(32),
out v_output BIGINT)
BEGIN
SET v_output = 1000; -- default sequence value
IF (p_input = 'test1') THEN
SET v_output = (Select MAX(a.id) FROM tbl1 a WHERE a.colunmname='somename');
ELSEIF (p_input = 'test2') THEN
SET v_output = (Select MAX(a.id) FROM tbl2 a WHERE a.colunmname='somename');
ELSE
SET v_output = 1000;
END IF;
END;
//
DELIMITER ;
它编译得很好。但是当我这样称呼它时
call prc_testProc('ww',@v_output);
我只得到“0行受影响”
我究竟做错了什么?在这种情况下,我期待默认值,即 1000。
解决方案
该变量将设置为过程中分配的值。然后,您可以在另一个查询中使用该变量。
CALL pr_testProc('ww', @testproc_result);
SELECT @testproc_result;
推荐阅读
- protractor - URL 更改后使用 browser.getCurrentUrl() 时出现超时错误
- php - TCP 上的十六进制协议
- jquery - jQuery Validate 检查字段的时间值是否不在具有相同日期的事件的开始时间和结束时间之间
- php - 即使我遵循 tcpdf 示例 1by1,PHP 中的 tcpdf wordpress 错误
- java - 通过 Java 访问片段中的 CalendarView
- c# - 无法从另一个类页面对象模型加载对象
- virtual-machine - 在打开 VM 或 Wireshark 日志捕获的情况下,Ping 不起作用
- node.js - 通过Nodejs包在Excel文件中执行VBA脚本
- python - 使用dfs查找图像中的连接组件时出现递归错误
- spring - Spring Boot @Cachable - 如何在运行时找出过期日期时间?