我如何推断参数并从 SQL 查询字符串返回列?
How could I infer parameters & returned columns from a SQL query string?
我正在构建一个允许用户输入 SQL 查询字符串的应用程序。这些查询字符串将包含 0 个或多个参数和 1 个或多个返回的列。是否有标准方法来解析 SQL 查询以提取这些元素?理想情况下,这将没有 运行 查询,甚至连接到 SQL 服务器的实例。
查询字符串可能如下所示:
SELECT
Posts.ID,
Posts.Description
FROM Posts
WHERE Posts.Date > @StartDate
然后,我想从中提取列名集合 ("Posts.ID"、"Posts.Description") 和参数集合 ("StartDate")。
这似乎不是一件特别奇怪的事情。事实上,Microsoft 在他们的报告产品中这样做(我在 BIDS 中看到过)。
有没有我可以使用的图书馆?否则,推荐的方法是什么?
我不知道有什么方法可以在不连接到 SQL 服务器的情况下获取此信息,但是对于 SQL Server 2012 以后,有一些新的系统存储过程可能会有所帮助;
在 SQL Server 2012 之前,您可以使用 SET FMTONLY ON 执行查询以获取结果集架构,但您需要知道参数。
希望这对您有所帮助,
里斯
我正在构建一个允许用户输入 SQL 查询字符串的应用程序。这些查询字符串将包含 0 个或多个参数和 1 个或多个返回的列。是否有标准方法来解析 SQL 查询以提取这些元素?理想情况下,这将没有 运行 查询,甚至连接到 SQL 服务器的实例。
查询字符串可能如下所示:
SELECT
Posts.ID,
Posts.Description
FROM Posts
WHERE Posts.Date > @StartDate
然后,我想从中提取列名集合 ("Posts.ID"、"Posts.Description") 和参数集合 ("StartDate")。
这似乎不是一件特别奇怪的事情。事实上,Microsoft 在他们的报告产品中这样做(我在 BIDS 中看到过)。
有没有我可以使用的图书馆?否则,推荐的方法是什么?
我不知道有什么方法可以在不连接到 SQL 服务器的情况下获取此信息,但是对于 SQL Server 2012 以后,有一些新的系统存储过程可能会有所帮助;
在 SQL Server 2012 之前,您可以使用 SET FMTONLY ON 执行查询以获取结果集架构,但您需要知道参数。
希望这对您有所帮助,
里斯