MySQL存储函数中的参数传递问题

runafteryou 2014-12-14 09:29:50
一个简单的存储函数,函数体完整定义如下:

CREATE FUNCTION closestMatchPC(targetPrice float) RETURNS char(10)
BEGIN
Declare curDif float;
if targetPrice > 1000 THEN
Set curDif = 1000;
ELSE
Set curDif = 2000;
end if;
return curDif;
END
总是出错,错误信息提示:
Unknown column 'targetPrice' in 'field list'

但是如上所示,'targetPrice' 是存储函数传进来的参数,不是字段名啊,不知道为什么会出现这个的错误。
MySQL版本是5.0.2
...全文
376 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
九月茅桃 2014-12-16
  • 打赏
  • 举报
回复
Unknown column 'targetPrice' in 'field list' 应该说的不是字段名字,而是你这个变量没有再函数体里面声明。
runafteryou 2014-12-16
  • 打赏
  • 举报
回复
在Navicat 9.0里面运行的,可能这个Navicat有问题啊。
ACMAIN_CHM 2014-12-15
  • 打赏
  • 举报
回复
mysql> delimiter //
mysql> CREATE  FUNCTION closestMatchPC(targetPrice  float) RETURNS char(10)
    -> BEGIN
    ->          Declare curDif float;
    ->          if targetPrice > 1000 THEN
    ->                   Set curDif = 1000;
    ->           ELSE
    ->                   Set curDif = 2000;
    ->          end if;
    ->          return curDif;
    -> END
    -> //
Query OK, 0 rows affected (0.02 sec)

mysql> delimiter ;
mysql> select closestMatchPC(100);
+---------------------+
| closestMatchPC(100) |
+---------------------+
| 2000                |
+---------------------+
1 row in set (0.00 sec)

mysql>
测试没有任何问题。
chengchow2001 2014-12-15
  • 打赏
  • 举报
回复
你没定义段落分隔符
benluobo 2014-12-15
  • 打赏
  • 举报
回复
你是不是在工具里面执行的内容 是不是除了这个函数以外 还执行了其他的语句

56,681

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧