很明显的,存储过程中发生参数的问题,检查了很久,发现参数的数据及值都是正确的,想了很久,有可能是因为使用了非正式的字符形成了,所以英文字符下重建了此过程,执行后,发现完成没问题,在此记录一下。
其他,在程序调用出错时,我在SQLYOG 内进行了测试,发生是完整的,无错误的.或许是那个测试版本的SQLyog有问题.
{"Incorrect number of arguments for PROCEDURE tymes.mail_Add; expected 6, got 1"}
[MySql.Data.MySqlClient.MySqlException]: {"Incorrect number of arguments for PROCEDURE tymes.mail_Add; expected 6, got 1"}
Data: {System.Collections.ListDictionaryInternal}
HelpLink: null
InnerException: null
Message: "Incorrect number of arguments for PROCEDURE tymes.mail_Add; expected 6, got 1"
Source: "MySql.Data"
StackTrace: " 在 MySql.Data.MySqlClient.MySqlStream.OpenPacket()\r\n 在 MySql.Data.MySqlClient.NativeDriver.ReadResult(UInt64& affectedRows, Int64& lastInsertId)\r\n 在 MySql.Data.MySqlClient.MySqlDataReader.GetResultSet()\r\n 在 MySql.Data.MySqlClient.MySqlDataReader.NextResult()\r\n 在 MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)\r\n 在 MySql.Data.MySqlClient.MySqlCommand.ExecuteReader()\r\n 在 MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery()\r\n 在 Nie.Data.MYYSQL.ExecuteStoredCommand(String procedureName, String[,] ps)\r\n 在 Nie.Data.MYSQLSTATIC.cmdStoredRun(String pn, String[,] ps)"
TargetSite: {Void OpenPacket()}
{MySql.Data.MySqlClient.MySqlCommand}
base {System.Data.Common.DbCommand}: {MySql.Data.MySqlClient.MySqlCommand}
CommandText: "mail_Add"
CommandTimeout: 30
CommandType: StoredProcedure
Connection: {MySql.Data.MySqlClient.MySqlConnection}
DesignTimeVisible: true
IsPrepared: false
LastInsertedId: 0
Parameters: {MySql.Data.MySqlClient.MySqlParameterCollection}
Transaction: null
UpdatedRowSource: Both
DELIMITER $$
USE `tymes`$$
DROP PROCEDURE IF EXISTS `mail_NewMail`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `mail_NewMail`(
IN mail_Caption VARCHAR(30)
, IN mail_Text VARCHAR(2000)
, IN mail_from_userName VARCHAR(20)
, IN mail_To_mailUIDS VARCHAR(1000)
, IN mailImportant VARCHAR(10)
, IN mailLength INT
)
COMMENT '邮件 添加新邮件'
BEGIN
-- 邮件标题
-- 邮件正文
-- 发件人
-- 收件人列表
-- 一般 优化 最高
-- 类型
DECLARE v1 INT DEFAULT mailLength ;
-- 添加方法
-- 1 添加 Mail_list(邮件正文) 然后添加 Mail_main(个人邮件信息表)
SET @newuuid = UUID() ;
-- 添加邮件信息
INSERT INTO `ns_mes_maillist` (`KEY_Mail`, `caption`, `text`, `From_User_Name`, `ToMailUIDS`)
VALUES
(@newuuid, mail_Caption, mail_Text, mail_from_userName, mail_To_mailUIDS) ;
-- 添加个人信息
-- 循环发送
WHILE v1 > 0 DO
SET @to_name = `func_getSplitString` (mail_To_mailUIDS, ',', v1) ;
INSERT INTO `ns_mes_mail_main` (`KEY_Mail`, `To_User_Name`, `Mail_important`, `Mail_Type`,`Mail_Status`, `CREATE_TIME`)
VALUES
(@newuuid, @to_name, mailImportant, 'In','Open', NOW()) ;
SET v1 = v1 - 1 ;
END WHILE ;
END$$
DELIMITER ;