1

我已经通过 Google 和 Stack Overflow 进行了大量搜索,如果有答案,我无法提出一个搜索查询来提供我正在寻找的答案。

我正在构建一个函数模块以在我的 ASP.net 网站中使用,以处理连接到 Microsoft SQL Server DB 和执行查询的所有繁琐工作。我目前正在研究执行查询的函数,并决定允许一个可选的函数参数,它是一个 SQL 参数数组。

在传递给它们的可选 SQL 参数的函数中,我想检查传递的 SQL 查询是否有命名参数。如果 SQL 查询中有命名参数,请确保确实传递了可选的 SQL 参数。如果 SQL 查询中没有命名参数,请确保没有传递任何 SQL 参数。例如:

  • SQL 查询 = SELECT * FROM MyTable WHERE ID = @TheID→ 函数调用必须有 SQL 参数。
  • SQL 查询 = SELECT GETDATE()→ 函数调用不能有 SQL 参数。

我对所有人的问题是“搜索”作为命名参数的 SQL 查询的字符串的最佳方法是什么(不知道参数的名称)。我对只在字符串中搜索“@”字符持谨慎态度,因为我在某处读到可能有一个以该字符命名的列(例如[name@domain])。也许我可以使用正则表达式来搜索“=”,然后是任意数量的空格,然后是“@”?

4

2 回答 2

0

没有理由你不能使用这个@角色。名称中不应该有一个@,因为它是一个变量而不是一个列。你不能有一个名为的变量@(var@iable)

查看sp_executesql。这是一个很好的例子,它做的事情与你正在尝试做的事情非常相似

于 2013-02-22T01:53:42.757 回答
0

对于.net,

  function checkQuery (byVal myQuery As String)

    return not instr(myQuery,"@") == 0
end function

如果您的查询包含“@”,则返回 true

于 2013-02-22T01:56:46.930 回答