Oracle兼容-存储过程-IF


1. 语法

  1. IF search_condition THEN statement_list
  2. [ELSIF search_condition THEN statement_list]
  3. [ELSE statement_list]
  4. END IF

2. 定义和用法

ORACLE 模式下,GreatSQL在存储过程/存储函数,可利用 IF .. ELSIF .. ELSE .. END IF 语句实现了一个基本的条件结构。

3. Oracle兼容说明

ORACLE 模式下,GreatSQL在存储过程/存储函数,可利用 IF .. ELSIF .. ELSE .. END IF 语句实现了一个基本的条件结构。而在GreatSQL原生语法结构中,是采用 IF .. ELSEIF .. ELSE .. END IF 这种用法。

ORACLE 模式下,将不再支持原生的 IF .. ELSEIF 语法。

4. 示例

  1. greatsql> SET sql_mode = ORACLE;
  2. greatsql> DELIMITER //
  3. greatsql> CREATE OR REPLACE PROCEDURE `elsif_sp`(n IN INT) AS
  4. BEGIN
  5. IF n >= 3 THEN
  6. SELECT 3 AS a, n;
  7. ELSIF n = 2 THEN
  8. SELECT 2 AS b, n;
  9. ELSE
  10. SELECT 1 AS c, n;
  11. END IF;
  12. RETURN;
  13. SELECT 0 AS d, n;
  14. END; //
  15. greatsql> CALL elsif_sp(0) //
  16. +---+------+
  17. | c | n |
  18. +---+------+
  19. | 1 | 0 |
  20. +---+------+
  21. 1 row in set (0.00 sec)
  22. Query OK, 0 rows affected (0.00 sec)
  23. greatsql> CALL elsif_sp(1) //
  24. +---+------+
  25. | c | n |
  26. +---+------+
  27. | 1 | 1 |
  28. +---+------+
  29. 1 row in set (0.00 sec)
  30. Query OK, 0 rows affected (0.00 sec)
  31. greatsql> CALL elsif_sp(2) //
  32. +---+------+
  33. | b | n |
  34. +---+------+
  35. | 2 | 2 |
  36. +---+------+
  37. 1 row in set (0.00 sec)
  38. Query OK, 0 rows affected (0.00 sec)
  39. greatsql> CALL elsif_sp(3) //
  40. +---+------+
  41. | a | n |
  42. +---+------+
  43. | 3 | 3 |
  44. +---+------+
  45. 1 row in set (0.00 sec)
  46. Query OK, 0 rows affected (0.00 sec)

问题反馈

联系我们

扫码关注微信公众号

greatsql-wx