在mysql中设置过程的默认值[duplicate]

x8diyxa7  于 2022-12-28  发布在  Mysql
关注(0)|答案(1)|浏览(93)
    • 此问题在此处已有答案**:

Is it possible to have a default parameter for a mysql stored procedure?(6个答案)
昨天关门了。
我想写的过程有参数,有默认值,如果没有值传递给它,像这样的东西:

CREATE DEFINER = 'root'@'localhost'
PROCEDURE client_logging_system.Proc_client_Get(IN in_clientID INT DEFAULT 1)
  COMMENT '
-- Proc for get user
-- Parameter:
-- in_clientID: ID of client
'
BEGIN
  SELECT c.ID, c.Name, c.BrokerID, c.LoginID, c.Password, c.`GroupID`, c.Quanity, c.ApiKey, c.ToTp FROM `client` c
  WHERE c.ID = in_clientID;
END

关于这个问题谁有什么建议?

u4dcyp6a

u4dcyp6a1#

如果定义了参数,则您必须为其提供值。您不能跳过该值。
如果您不想指定值并在у上应用一些“默认值”,则可以在代码中执行以下操作:

CREATE DEFINER = 'root'@'localhost'
PROCEDURE client_logging_system.Proc_client_Get(IN in_clientID INT)
BEGIN
SET in_clientID = COALESCE(in_clientID, 1);  -- if NULL is provided then set to default value 1
...

因此,您使用CALL client_logging_system.Proc_client_Get(123)作为确定的参数值,使用CALL client_logging_system.Proc_client_Get(NULL)作为应用默认值。

相关问题