56,677
社区成员
发帖
与我相关
我的任务
分享
CREATE PROCEDURE `NextSeqValue`(seqName VARCHAR(16), OUT nextVal int)
BEGIN
update sequence set current_value = current_value + 1 where seq_name = seqName;
select current_value into nextVal from sequence where seq_name = seqName;
END
DELIMITER $$
CREATE PROCEDURE `test`(IN seqName VARCHAR(16), OUT nextVal INT)
BEGIN
UPDATE tmp SET id = id +1 WHERE C = seqName ;
SELECT id INTO nextVal FROM tmp WHERE C = seqName ;
END$$
DELIMITER ;
执行是成功的.
以下C#测试:
MySqlConnection mysct = new MySqlConnection("连接串");
mysct.Open();
MySqlCommand myCommand = new MySqlCommand();
myCommand.Connection = mysct;
myCommand.CommandType = CommandType.StoredProcedure;
myCommand.CommandText = "test";
MySqlParameter p1 = new MySqlParameter("seqName", MySqlDbType.String);
MySqlParameter p2 = new MySqlParameter("nextVal", MySqlDbType.Int32);
p1.Direction = ParameterDirection.Input;
p2.Direction = ParameterDirection.Output;
p1.Value = "test";
myCommand.Parameters.Add(p1);
myCommand.Parameters.Add(p2);
myCommand.ExecuteNonQuery();
System.Console.WriteLine(p2.Value.ToString());
mysct.Close();