【问题标题】:Replace function set as Store Procedure or Function in MySQL?将函数集替换为 MySQL 中的存储过程或函数?
【发布时间】:2013-08-22 18:45:44
【问题描述】:

如何将我的替换函数转换为 MySQL 中的存储过程或函数?

这是一个简化的更新脚本:

mysql> UPDATE content SET url = REPLACE (url, 'testsite', 'livesite') WHERE URL LIKE '%testsite%';

我希望能够存储它并通过查询运行这个函数。

我的目标是这样的:

CALL myupdatefunction ('testsite', 'livesite', @url);

这是我迄今为止尝试过的:

DELIMITER //
CREATE PROCEDURE updateURL(OUT url1, OUT url2)
BEGIN 
   UPDATE content SET url = REPLACE (url, url1, url2) WHERE URL LIKE url1;
END //
DELIMITER ;

然后打电话

CALL updateURL('stringOld','stringNew');

不确定这是否是正确的方法?

【问题讨论】:

  • @MarcB,忘记添加我的试用版。感谢您查看此内容。
  • 您的过程仅使用两个参数定义,但您使用 3... 调用它
  • @MarcB - system 函数 REPLACE 正在被调用,其中包含三个参数,其中一个来自正在更新的表。 用户定义函数 updateURL 仍在使用两个参数调用。 [至少在最后的代码示例中,我认为 OP 的第一个示例有点不稳定。]

标签: mysql information-schema


【解决方案1】:

你只需要做一点改变,你必须在like表达式中添加百分号

DELIMITER //
CREATE PROCEDURE updateURL(OUT url1, OUT url2)
BEGIN 
   UPDATE content SET url = REPLACE (url, url1, url2) WHERE URL LIKE CONCAT('%', url1, '%');
END //
DELIMITER ;

【讨论】:

    猜你喜欢
    • 2015-08-28
    • 2011-04-04
    • 2021-12-12
    • 1970-01-01
    • 2020-07-11
    • 1970-01-01
    • 2018-11-25
    • 2017-04-23
    • 1970-01-01
    相关资源
    最近更新 更多