.NET SqlCommand – 在内联查询中查找参数(正则表达式?)

我有一个方法,它使用sp_sproc_columns来查找需要为存储过程发送的所有参数.

我的问题是如何为内联SQL查询执行类似的操作?

我想获得查询所期望的参数列表.

实现这一目标的唯一方法是使用正则表达式吗?任何例子?

例:

sql = "SELECT * FROM tbl WHERE id = @id AND name = @name"

我需要一个包含@id和@name的列表.

最佳答案 使用RegularExpression的方式也不是太难 – 如果这是您更喜欢找到参数的方式:

   Regex r = new Regex(@"(?<Parameter>@\w*)", RegexOptions.Compiled);

   foreach (Match m in r.Matches(sqlStatement))
   {
      if(m.Success)
      {
         string parameterName = m.Value;
      }
   }

但是,这只会给你参数名称 – 它不可能猜测或确定参数类型或任何其他参数元数据 – 所以最后,这可能是一个快速,但可能也是“脏”的方式去做吧.

点赞