【问题标题】:How to include "declare" syntax in a MySqlCommand如何在 MySqlCommand 中包含“声明”语法
【发布时间】:2014-12-24 09:41:34
【问题描述】:

我需要在 MySqlCommand 中声明一个局部变量,但该变量一直被解释为参数,因此抛出异常,说明该参数未初始化。我正在尝试做类似的事情:

comm.CommandText="declare @mid int; etc.....";

@mid 是一个局部变量,而不是一个参数,但微软的某个人认为使用 @ 来为参数添加前缀是个好主意。

【问题讨论】:

  • 您可以将该代码转换为存储过程(这似乎很合理,因为您需要局部变量),然后通过您的命令调用该过程。
  • 我想知道为什么我没有想到。谢谢!
  • 注意,这不是微软的错,而是你用来连接 MySQL 的任何库的作者,你应该向他们报告。
  • MySQL 中带有@ 前缀的变量称为“用户定义”变量。它们是无类型的,不能被声明,所以你在这里的使用无论如何都是无效的。

标签: c# mysql


【解决方案1】:

MySQL 允许在查询中内联创建变量,您只需使用所需的任何值构建语句,然后可以在查询中进行调整,就好像它是内联变量一样。由您来控制和了解/更改数据类型......类似......

select
      a.field,
      @var1 := @var +1 as sampleIncrease,
      @var2 := DATE_ADD( @var2, INTERVAL @var1 DAY )
   from
      someTable a,
      ( select @var1 := 1, 
               @var2 := now()  ) sqlvars
   where
      ...

Here is another example from my post posts showing a variety of uses of mysql variables

【讨论】:

    猜你喜欢
    • 2020-06-16
    • 2020-01-08
    • 2016-10-17
    • 2020-01-23
    • 2016-06-18
    • 1970-01-01
    • 2012-01-28
    • 1970-01-01
    • 2020-03-05
    相关资源
    最近更新 更多