繁体   English   中英

调用mysql存储过程参数

[英]Call mysql stored procedures parameter

我在MySQL数据库中开发用于计数的存储过程。 当我运行它时,它计算表内的所有行。 我只想统计今天的条目。 然后从C#调用我的过程,其submittaimestamp值等于我的表单日期时间选择器值。 我该怎么做? 当我运行它给我错误:

过程wartif.allcounter的参数数目不正确; 预期为0,得到1

DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `allcounter`()
BEGIN
SELECT username, COUNT(IF(status='hold',1,null)) 'hold',
       COUNT(IF(status='complete',1,null)) 'complete',
       COUNT(IF(loantype='tls',1,null)) 'tls',
       COUNT(IF(loantype='rtf',1,null)) 'rtf',
       COUNT(IF(loantype='ktl',1,null)) 'ktl',
       COUNT(IF(loantype='con',1,null)) 'con',
       COUNT(IF(status='hold',1,null)) 'hold',
       COUNT(IF(status='complete',1,null)) 'complete',
       COUNT(IF(status='route',1,null)) 'route',
       COUNT(IF(status='route(*)',1,null)) 'route(*)',
       COUNT(IF(neworsecond='new',1,null)) 'new', 
       COUNT(IF(neworsecond='Second',1,null)) 'Second'
FROM loans
WHERE DATE(submittimestamp) = submitdate
group by username;

   END

这就是我试图从应用程序中调用它的方式

MySqlCommand cmdwaqDatabase = new MySqlCommand("call allcounter('submitdate')", conwaqDatabase);

DateTime dateTimeValue = tdtp.Value;
cmdwaqDatabase.Parameters.AddWithValue("submitdate", dateTimeValue);

您没有为存储过程指定任何参数,因此

WHERE DATE(submittimestamp) = submitdate
                              ^^^^^^^^^^

在函数中未定义(除非您实际上有一个名为submitdate的字段)。

定义应该更像

CREATE DEFINER=`root`@`localhost` PROCEDURE `allcounter`(IN submitdate DATE)
                                                         ^^^^^^^^^^^^^^^^^^

由于您未定义任何参数,因此会得到一条完全正确的错误消息-该函数使用零参数定义,并且您尝试传递一个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM