【问题标题】:How to redeclare/redefine MySQL User Function every time you refresh?每次刷新时如何重新声明/重新定义 MySQL 用户函数?
【发布时间】:2015-11-26 10:00:06
【问题描述】:

是否可以在每次刷新时重新声明一个MySQL函数,这是我的代码

mysql_query("
DROP FUNCTION IF EXISTS Add_num;
CREATE FUNCTION Add_num(LAT_A INT)
RETURNS INT
READS SQL DATA
DETERMINISTIC
BEGIN
DECLARE Ans BIGINT;
SET Ans = LAT_A + 2;
RETURN Ans;
END");

即使我有DROP FUNCTION IF EXISTS Add2; 行,刷新时功能保持不变。例如,我将SET Ans = LAT_A + 2; 行中的2 更改为3,然后刷新它仍然添加2 而不是3

【问题讨论】:

  • 在 mysql_query 方法中不允许使用分号 (;)

标签: php mysql sql-drop create-function


【解决方案1】:

我已经为您编写了解决方案,但在这里我使用了 mysqli,因为您会知道 mysql_query() 不接受分号(;) 并且一次只能执行一个查询。

代码如下:

$mysqli = new mysqli("localhost", "root", "", "test");

if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

if (!$mysqli->query("DROP FUNCTION IF EXISTS Add_num") ||
    !$mysqli->query("CREATE FUNCTION Add_num(LAT_A INT) RETURNS INT  READS SQL DATA  DETERMINISTIC  BEGIN  DECLARE Ans BIGINT;  SET Ans = LAT_A + 4;  RETURN Ans;  END;")) {
    echo "Function creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
$select_qry = " SELECT Add_num(6) as result";
$result = $mysqli->query($select_qry);

if ($result) {
    $row = $result->fetch_assoc();
    echo "Result is :{$row['result']}";
}

$mysqli->close();

【讨论】:

    猜你喜欢
    • 2021-10-01
    • 2023-03-28
    • 2018-09-15
    • 2020-06-17
    • 1970-01-01
    • 1970-01-01
    • 2020-10-19
    • 1970-01-01
    • 2013-08-07
    相关资源
    最近更新 更多