我正在寻找灵活的更新存储过程。我做了这个。 当我调用这个CALL 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
答案 0 :(得分:1)
我必须在这个例子中总是传递5个参数吗?
我也可以这样做吗?
CALL spUpdatePage(1,'a','c')
对于已发布的存储过程,您必须传递所有5个参数。不,您不能只传递name
和description
(到您发布的存储过程)。但是,您可以编写仅更新name
和description
的存储过程。像,
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