dom*_*ojk 28 mysql stored-procedures
我有一个mysql存储过程(谷歌书),一个例子是这样的:
DELIMITER $$
DROP PROCEDURE IF EXISTS my_sqrt$$
CREATE PROCEDURE my_sqrt(input_number INT, OUT out_number FLOAT)
BEGIN
SET out_number=SQRT(input_number);
END$$
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)
程序编译得很好.(我在ubuntu中使用MySQL Query Browser).
但是,当我调用该程序时:
CALL my_sqrt(4,@out_value);
Run Code Online (Sandbox Code Playgroud)
(也在查询浏览器中)
它返回一个错误:
(1064) check the manual that correspond to the...
Run Code Online (Sandbox Code Playgroud)
为什么这个例子不起作用?
cha*_*aos 38
无法复制.它对我来说很好:
mysql> CALL my_sqrt(4, @out_value);
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT @out_value;
+------------+
| @out_value |
+------------+
| 2 |
+------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
也许您应该粘贴整个错误消息而不是总结它.
我只是尝试在终端中调用一个函数,而不是在 MySQL 查询浏览器中调用它,它就可以工作。所以,看来我在该程序中做错了什么......
我不知道是什么,因为我之前成功调用了一些程序(但没有输出参数)...
对于这个我已经输入了
CALL my_sqrt(4,@out_value);
SELECT @out_value;
Run Code Online (Sandbox Code Playgroud)
结果出现错误:
您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在第 2 行“SELECT @out_value”附近使用的正确语法
奇怪的是,如果我只写:
CALL my_sqrt(4,@out_value);
Run Code Online (Sandbox Code Playgroud)
结果消息是:“查询已取消”
我想,现在我只会使用终端......
小智 6
您必须使用正确的签名输入参数*IN在以下代码中缺失.
CREATE PROCEDURE my_sqrt(IN input_number INT, OUT out_number FLOAT)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
153899 次 |
最近记录: |