【发布时间】:2018-05-30 11:43:27
【问题描述】:
我有一个存储过程,我想删除它然后重新创建它。它可以在 Mysql 工作台上工作,但不能在 c# 代码中工作。
我正在使用 MySql Workbench 6.3 CE
这是存储过程的试运行:
DROP PROCEDURE IF EXISTS AccountGetAccountOpeningClosingStock;
DELIMITER $$
CREATE DEFINER=`root`@`%` PROCEDURE
`AccountGetAccountOpeningClosingStock`(IN _endDate datetime)
BEGIN
Select * From openingclosingstock Where CreateDate <= _endDate order by
CreateDate asc;
END$$
DELIMITER ;
这是来自 C# 代码的调用:
string myConnectionString = FetchDbConnectionString(environment, item);
MySqlConnection mySqlConnection = new MySqlConnection(myConnectionString);
MySqlCommand mySqlCommand = new MySqlCommand(storedProcedureSqlQuery, mySqlConnection);
await mySqlConnection.OpenAsync();
var reader = await mySqlCommand.ExecuteReaderAsync();
while (await reader.ReadAsync())
{
// do something
}
reader.Close();
await mySqlConnection.CloseAsync();
来自 C# 代码的错误:
您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在 'DELIMITER $$ 附近使用正确的语法 在第 1 行创建 DEFINER=
root@%PROCEDURE `AccountGetAccountOpeningClosi'
我为示例创建了一个应用程序: Demo stored procedure
【问题讨论】:
-
storeProcedureSqlQuery的确切值是多少? -
我附上了一个Demo项目,请查收,你会知道的。