基本上,我正在尋找一個相當於SqlCommandBuilder.DeriveParameters
,這將適用於任意T-SQL。如何確定任意一條T-SQL所需的參數?
例如,此查詢需要一個參數:
SELECT @Foo [Foo], '@Bar' [Bar], @Baz [Baz]
我基本上需要提取:
new[] { "Foo", "Baz" }
從以上。我可以構建一個SQL解析器,但是我有一個到SQL服務器的開放連接,所以如果可能的話,我寧願使用現有的選項。
編輯:
有有是一個辦法做到這一點,因爲SQL Server商業智能開發工作室是能夠做到這一點非常成功。
編輯2:
SQL BIDS是爲了描述的結果執行以下命令:
exec sp_executesql N'SET FMTONLY OFF;SET FMTONLY ON;SELECT @Foo [Foo], ''@Bar'' [Bar], @Baz [Baz]',
N'@Foo sql_variant,@Baz sql_variant',
@Foo=NULL,@Baz=NULL
這解釋了它是如何確定列,但可能是隻是字符串解析獲取參數...
你是如何建立這個初始字符串?有什麼你可以使用,你用來動態建立這個字符串來找到所需的參數? – mservidio 2011-04-26 15:35:35
如果您在獲取Business Intelligence Development Studio的同時觀看服務器,SQL Profiler會顯示任何有趣的內容嗎?會告訴我們,如果它是一個服務器功能或只是字符串解析 – AakashM 2011-04-26 15:36:53
也許只是使用正則表達式來查找不引用引號中的@變量...應該工作,我認爲。 – mservidio 2011-04-26 15:38:17