mysql存储过程不会返回结果

时间:2014-10-13 07:22:03

标签: mysql

CREATE PROCEDURE catalog_get_category_products(IN inCategoryId INT)
BEGIN
SELECT     p.product_id, p.name, p.description, p.price
FROM       product p
INNER JOIN product_category pc
           ON p.product_id = pc.product_id
WHERE      pc.category_id = inCategoryId
ORDER BY   p.product_id;
END$$

这个我的存储过程在执行时它返回任何内容,尽管类别有产品,似乎无法理解哪里出错了任何指针来解决这个问题。 执行上述程序时,应返回与该类别相关的产品

1 个答案:

答案 0 :(得分:0)

以下对我有用。

表和测试数据的初始设置(您不必执行此部分;仅供参考):

CREATE TABLE IF NOT EXISTS product
(
    product_id int PRIMARY KEY,
    name varchar(50),
    description varchar(50),
    price decimal(10, 2)
);

CREATE TABLE IF NOT EXISTS product_category
(
    product_id int,
    category_id int,
    PRIMARY KEY (product_id, category_id)
);

INSERT INTO product VALUES (1, 'Shirt', 'long-sleeve blue shirt', 15.99)
  ON DUPLICATE KEY UPDATE product_id = product_id;

INSERT product_category VALUES (1, 23)
  ON DUPLICATE KEY UPDATE product_id = product_id;

存储过程设置(尝试此部分并看到它适合您):

DROP PROCEDURE IF EXISTS catalog_get_category_products;

DELIMITER $$
CREATE PROCEDURE catalog_get_category_products
(
    inCategoryId INT
)
BEGIN
    SELECT     p.product_id, p.name, p.description, p.price
    FROM       product p
    INNER JOIN product_category pc
               ON p.product_id = pc.product_id
    WHERE      pc.category_id = inCategoryId
    ORDER BY   p.product_id;
END$$
DELIMITER ;

调用存储过程(将23替换为与category_id表中至少一个有效product_id相关联的有效product_category

CALL catalog_get_category_products(23);