【问题标题】:How to write mysql user defined function in php如何在php中编写mysql用户定义函数
【发布时间】:2015-03-27 11:19:26
【问题描述】:

请告诉我如何在 PHP 中定义 MySQL 用户定义函数...

我正在使用以下代码。但它不起作用。

它抛出错误:

" (1313) RETURN 只允许在 FUNCTION "

$mysqli = new mysqli( $DBHost, $DBUserName, $DBPassword, $DBName );


$Query =
"CREATE PROCEDURE FunGetRegistryValue(OUT Param_RegistryKey varchar(40))
BEGIN
    DECLARE vResult varchar(90);
    SELECT  iFnull(Value,'') INTO vResult FROM Project_Registry Where RegistryKey=Param_RegistryKey;
    RETURN(vResult);
END;";

if( !$mysqli->query( $Query ) ) {
    echo "Stored procedure creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

当我使用 FUNCTION 关键字而不是 PROCEDURE 时,我得到语法错误...

请给我“值返回函数”的示例代码

【问题讨论】:

    标签: php mysql user-defined-functions


    【解决方案1】:
    DELIMITER $$ 
    CREATE DEFINER=root@localhost
    FUNCTION FunGetRegistryValue(Param_RegistryKey varchar(40)) 
    RETURNS varchar(90) 
    CHARSET latin1 DETERMINISTIC 
    BEGIN 
        DECLARE vResult varchar(90); 
        SELECT iFnull(Value,'') INTO vResult 
        FROM Project_Registry Where RegistryKey=Param_RegistryKey;
        RETURN(vResult); 
    END$$ 
    DELIMITER ;
    

    最初是 Fozia 的评论。我将其添加为答案,这样它就不会在查询时出现混乱并且清晰易读。

    【讨论】:

      【解决方案2】:

      $mysqli = new mysqli($DBHost, $DBUserName, $DBPassword, $DBName);

      $Query =
      "DROP FUNCTION IF EXISTS FunGetRegistryValue;
      
      CREATE   FUNCTION FunGetRegistryValue(Param_RegistryKey VARCHAR(40)) RETURNS VARCHAR(90) CHARSET latin1
         DETERMINISTIC
      BEGIN
         DECLARE vResult VARCHAR(90);
         SELECT  IFNULL(VALUE,'') INTO vResult FROM Project_Registry WHERE RegistryKey=Param_RegistryKey;
         RETURN(vResult);
         END;";
      
      if( !$mysqli->multi_query( $Query ) ) {
          echo $mysqli->error;
          exit();
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-15
        • 2016-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-08
        • 2020-10-05
        相关资源
        最近更新 更多