我有一个存储过程来更新两个表中的某些值。但是要更新的参数列表或值集已增加到10个参数,并且将来可能会增长更多。怎么办呢?
CREATE DEFINER=`root`@`localhost` PROCEDURE `update_base_plan`(userId int,newPlanId int,nextPlanId int,maxCreditPulseAllocated int)
begin
if userId is not null and newPlanId is not null and nextPlanId is not null
and maxCreditPulseAllocated is not null
then
update planallocation as pa
left join subscriptioninfo as si
on pa.SubscriptionId = si.SubscriptionId
left join plans as pl
on pa.CurrentPlanId = pl.PlanId
set pa.CurrentPlanId = newPlanId, pa.NextPlanId = nextPlanId,
pa.MaxCreditPulseAllocated = maxCreditPulseAllocated
where pl.Plan_Type = 'base' and
si.UserId = userId;
end if;
end$$
DELIMITER ;
答案 0 :(得分:0)
技术上,当(存储的)程序需要 n 参数时,您通常不会提供 n 参数。
然而,在某些编程语言中,不是一次提供所有这些参数,而是提供数组/字典/对象,转换为"一个参数"。我不确定,如果在mysql中这是可能的,但你可能可以使用json作为输入并使mysql解压缩它(或者你可以调用它)。例如,请参阅http://dev.mysql.com/doc/refman/5.7/en/json-search-functions.html(和兄弟页面)。根据数据类型,您可以执行其他类似于csv或新行分隔的编码。但是,当他们没有得到足够好的沟通时,我建议反对位置论证。