使用Inner Join的MySQL查询返回存储过程中的所有记录

时间:2013-08-10 00:40:03

标签: mysql sql database stored-procedures inner-join

我有一个数据库,我使用内部联接返回一组更有用的信息。我跑的时候:

SELECT `invoices`.`property`,`invoices`.`invoice_number`,`invoices`.`date`,`customers`.`company_name`,`invoices`.`total`
FROM `invoices`
INNER JOIN `customers` ON `invoices`.`customer` = `customers`.`customer_id`
WHERE `invoices`.`property` = 'CGC' ORDER BY `invoices`.`date` DESC;

就我自己而言,我完全恢复了我的期望。

enter image description here

但是当我使用相同的查询创建一个存储过程时,接受一个参数,一个la:

DELIMITER $$

USE `techrentals`$$

DROP PROCEDURE IF EXISTS `getInvoiceList`$$

CREATE DEFINER=`root`@`%` PROCEDURE `getInvoiceList`(IN prop_id INT)
BEGIN
    SELECT `invoices`.`property`,`invoices`.`invoice_number`,`invoices`.`date`,`customers`.`company_name`,`invoices`.`total`
    FROM `invoices`
    INNER JOIN `customers` ON `invoices`.`customer` = `customers`.`customer_id`
    WHERE `invoices`.`property` = prop_id ORDER BY `invoices`.`date` DESC;
    END$$

DELIMITER ;

然后我执行该存储过程:

CALL getInvoiceList('CGC');

它会返回集合中的每张发票。

enter image description here

任何想法为什么它不会返回完全相同的集合?我不是MySQL的专家,但在我看来,这些应该在功能上完全相同。

提前致谢。

1 个答案:

答案 0 :(得分:2)

您将参数类型声明为int,但在调用中传递一个字符串。