我在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)
^^^^^^^^^^^^^^^^^^
由于您未定义任何参数,因此会收到一条完全正确的错误消息-该函数使用零参数定义,并且您尝试传递一个。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句