0

我有一个数据库,我在其中使用内部联接返回一组更有用的信息。当我运行时:

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;

就其本身而言,我得到了我所期望的。

在此处输入图像描述

但是当我使用相同的查询创建一个存储过程时,接受一个参数,a 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');

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

在此处输入图像描述

知道为什么它不返回完全相同的集合吗?我不是 MySQL 专家,但在我看来,它们在功能上应该是相同的。

提前致谢。

4

1 回答 1

2

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

于 2013-08-10T00:42:57.380 回答