[英]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.