簡體   English   中英

靈活的更新存儲過程Mysql

[英]Flexible Update Stored Procedure Mysql

我正在尋找一種靈活的更新存儲過程。 我做了這個。 當我將此調用稱為spUpdatePage(1,'a','b','c'd')時,它可以正常工作。

在此示例中,我是否必須始終通過5個參數?

我也可以這樣做嗎

CALL spUpdatePage(1,'a','c') 

並且該存儲過程知道我只想更新列的名稱和描述?

CREATE DEFINER=`root`@`localhost` PROCEDURE `spUpdatePage`(
IN `pKey` INT(4), 
IN `name` VARCHAR(255), 
IN `title` VARCHAR(255), 
IN `description` VARCHAR(255), 
IN `keywords` VARCHAR(255))
UPDATE
    pages
SET
    name = COALESCE(name, name),
    title = COALESCE(title, title),
    description = COALESCE(description, description),
    keywords = COALESCE(keywords, keywords)
WHERE
    id = pKey

在此示例中,我是否必須始終通過5個參數?

我也可以這樣做嗎?

 CALL spUpdatePage(1,'a','c') 

對於發布的存儲過程,必須傳遞所有5個參數。 不,您不能僅將namedescription (傳遞到您發布的存儲過程中)。 但是,您可以編寫一個僅更新namedescription的存儲過程。 就像是,

CREATE DEFINER=`root`@`localhost` PROCEDURE `spUpdatePageNameTitle`(
  IN `pKey` INT(4), 
  IN `name` VARCHAR(255), 
  IN `title` VARCHAR(255))
UPDATE
  pages
SET
  name = COALESCE(name, name),
  title = COALESCE(title, title)
WHERE
  id = pKey

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM