我有一个数据库,我使用内部联接返回一组更有用的信息。我跑的时候:
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;
就我自己而言,我完全恢复了我的期望。
但是当我使用相同的查询创建一个存储过程时,接受一个参数,一个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的专家,但在我看来,这些应该在功能上完全相同。
提前致谢。
答案 0 :(得分:2)
您将参数类型声明为int,但在调用中传递一个字符串。