Chinaunix首页 | 论坛 | 博客
  • 博客访问: 490125
  • 博文数量: 99
  • 博客积分: 3621
  • 博客等级: 中校
  • 技术积分: 1089
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-22 16:29
文章存档

2012年(21)

2011年(28)

2010年(50)

分类: Mysql/postgreSQL

2011-09-19 10:25:22

  1. mysql> use test;
  2. Database changed
  3. mysql> drop procedure if exists sp1;
  4. Query OK, 0 rows affected (0.00 sec)

  5. #create procedure using prepare
  6. mysql> delimiter //
  7. mysql> create procedure sp1(str varchar(1000))
  8.     -> begin
  9.     -> set @p=concat('select greatest(',str,')');
  10.     -> PREPARE stmt1 FROM @p;
  11.     -> EXECUTE stmt1 ;
  12.     -> DEALLOCATE PREPARE stmt1;
  13.     -> end;
  14.     -> //
  15. Query OK, 0 rows affected (0.00 sec)

  16. mysql> delimiter ;

  17. #testing procedure,parameter count is arbitrary
  18. mysql> call sp1('1,2,3,40,5,4000');
  19. +---------------------------+
  20. | greatest(1,2,3,40,5,4000) |
  21. +---------------------------+
  22. | 4000 |
  23. +---------------------------+
  24. 1 row in set (0.00 sec)

  25. Query OK, 0 rows affected (0.01 sec)

  26. mysql> call sp1('1,2,3,40,5');
  27. +----------------------+
  28. | greatest(1,2,3,40,5) |
  29. +----------------------+
  30. | 40 |
  31. +----------------------+
  32. 1 row in set (0.00 sec)

  33. Query OK, 0 rows affected (0.01 sec)
阅读(1586) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

9094133352011-09-19 11:13:01

修改了存储过程,用一个参数来代替是取最大值还是最小值

create procedure sp1(str varchar(1000),voption TINYINT)
begin
   if voption =1 then
      set @p=concat('select greatest(',str,')');
   else
      set @p=concat('select LEAST(',str,')');
   end if;
   PREPARE stmt1 FROM @p;
   EXECUTE stmt1 ;
   DEALLOCATE PREPARE stmt1;
end;

9094133352011-09-19 10:51:54

如果是要取最小值,只需要把greatest改成LEAST