2013-08-22 54 views
0

如何將我的替換函數轉換爲MySQL中的存儲過程或函數?將函數集替換爲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'); 

不知道這是正確的方法?

+1

http://dev.mysql.com/doc/refman/5.1/en/stored- routines.html –

+0

@MarcB,忘了添加我的試用版。感謝您審查這一點。 –

+0

你的過程只有兩個參數定義,但你用3 ... –

回答

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 ; 
+0

LIKE CONCAT('%',url1,'%');這對我和我的感謝。 –