在c#中使用SQL关键字MySqlCommand.CommandText

本文关键字:关键字 MySqlCommand CommandText SQL | 更新日期: 2023-09-27 18:17:50

我正在将我的存储过程移动到c#代码。在存储过程中,我有像

这样的东西
Begin
SET @Id = null;
IF ?Status = 0 THEN SET ? ?DateToday = UTC_TIMESTAMP(); END IF;
SELECT * FROM TABLE
END 

在c#代码中,我只是复制粘贴了Begin和END中的所有内容。一样,

MySqlCommand command = new MySqlCommand();
command.CommandText = @"SET @Id = null;
IF ?Status = 0 THEN SET ? ?DateToday = UTC_TIMESTAMP(); END IF;
SELECT * FROM TABLE"

我在If语句中有一个错误,说语法不正确。存储过程是工作的,但不是当我把它放在c#代码。

在c#中使用SQL关键字MySqlCommand.CommandText

这不是存储过程的逻辑。顾名思义,存储过程是存储在数据库本身中的函数。你可以通过叫他们的名字来调用他们。

因此,你不能把存储过程函数代码放在你的c#代码中,我的意思是你不应该。

更新:如果您只想使用T-SQL语句(if-else块等),请查看此链接。

如果您已经创建了一个存储过程,那么您可以使用如下的存储过程语法来调用它;

using (SqlConnection con = new SqlConnection(someconnectionstring)) {
    using (SqlCommand cmd = new SqlCommand("myStoredProc", con)) {
      cmd.CommandType = CommandType.StoredProcedure;
      //If you have parameters in your SP, add like this else ignore below line
      cmd.Parameters.Add("@myparam", SqlDbType.VarChar).Value = somevalue;
      con.Open();
      cmd.ExecuteNonQuery();
    }
  }