【问题标题】:Writing optional parameters within stored procedures in MySQL? [duplicate]在 MySQL 的存储过程中编写可选参数? [复制]
【发布时间】:2012-09-21 01:27:17
【问题描述】:

我想创建一个存储过程,它可以根据传递给它的参数更新表中的所有字段或仅更新其中的一些字段。

如何创建一个接受可选参数的存储过程?

【问题讨论】:

    标签: mysql stored-procedures


    【解决方案1】:

    Optional Parameters 在 MySQL 上尚不支持。我建议您在参数中传递 null 值,并且在存储过程中有一个 IF 语句。

    DELIMITER $$
    CREATE PROCEDURE procName
    (IN param VARCHAR(25))
    BEGIN
       IF param IS NULL THEN 
          -- statements ;
       ELSE commands
          -- statements ;
       END IF;
    END$$
    DELIMITER ;
    

    【讨论】:

    • 因为 Mysql 现在实际上归 Oracle 所有。我们也不希望将来实施它。
    【解决方案2】:

    一种特殊情况是参数不能为 NULL,即因为是键。对于这些情况,我使用了一个技巧:我将参数设置为 -1:

    CREATE PROCEDURE procCreate
    (IN id_cosa INT(11))
      BEGIN
        IF id_cosa != -1 THEN
          ~~(your code here)~~
        END IF
      END
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-10
      • 1970-01-01
      • 2013-07-11
      • 2011-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多