【发布时间】:2010-09-10 14:34:33
【问题描述】:
如何在mysql存储过程中创建可选参数?
【问题讨论】:
标签: mysql
如何在mysql存储过程中创建可选参数?
【问题讨论】:
标签: mysql
根据this bug,目前没有办法创建可选参数。
【讨论】:
mySQL 存储过程不支持可选参数,目前也没有任何添加此功能的计划。我建议为可选参数传递 null。
【讨论】:
我使用的(有点笨拙的)解决方法是定义一些我认为我可能会使用的参数,然后在使用之前测试可选参数的值是否为 NOT NULL:
CREATE PROCEDURE add_product(product_name VARCHAR(100), product_price FLOAT,
cat1 INT, cat2 INT, cat3 INT)
-- The cat? parameters are optional; provide a NULL value if not required
BEGIN
...
-- Add product to relevant categories
IF cat1 IS NOT NULL THEN
INSERT INTO products_to_categories (products_id, categories_id) VALUES (product_id, cat1);
END IF;
IF cat2 IS NOT NULL THEN
INSERT INTO products_to_categories (products_id, categories_id) VALUES (product_id, cat2);
END IF;
IF cat3 IS NOT NULL THEN
INSERT INTO products_to_categories (products_id, categories_id) VALUES (product_id, cat3);
END IF;
END
如果我不想在调用存储时使用该参数,我只需传递一个 NULL 值。以下是调用上述存储过程的示例:
CALL add_product("New product title", 25, 66, 68, NULL);
【讨论】: