0
我有以下查詢從ASP.NET應用程序中調用,並創建同一個表「DETAILS」中的行的子集,該子集由用於分頁目的的參數$ f2和$ f3定義。參數傳遞給查詢之前,「#*」散列和星形符號的用途是什麼?
INSERT INTO DETAILS (ID, UIN, ACTIVE_IND, UGUID, CREATED_BY, CREATED_DATE)
SELECT AF.ID, AF.UIN, AF.ACTIVE, AF.UGUID, AF.CREATED_BY, AF.CREATED_DATE FROM
(SELECT #*$f0 ID, DET.UIN, DET.ACTIVE_IND, DET.UGUID, DET.CREATED_BY, DET.CREATED_DATE,
DENSE_RANK() OVER (ORDER BY P.PRODUCT_ID) FG
FROM DETAILS DET
JOIN PRODUCTS P ON P.UIN = DET.UIN
WHERE ID = #*$f1) AF
WHERE AF.FG BETWEEN #*$f2 AND #*$f3
調用此查詢的ASP.NET C#代碼看起來像這樣
new SqlDataSource().ExecuteSql("InsertDetails",
new List<object>() {_subSetId, _mainSetId, start, end});
「InsertDetails」是上面查詢的名稱和「開始」,「結束」是尋呼範圍。
我的問題是:這個查詢中的參數之前的「#*」是什麼函數或目的?我需要複製這個查詢其他表,但想知道爲什麼參數通過像這樣「#* $ f0」,「#* $ f1」,「#* $ f2」和「#* $ f3」。
這些不是T-SQL中列或變量名稱的合法形式(當然,除非用方括號轉義),SqlDataSource也沒有對此做任何特殊處理(我可以找到)。你如何得到這個查詢文本? –
有時候,這種奇怪的字符被用作在調用之前在字符串級別上替換的佔位符(動態命令生成的種類)......既不美觀也不乾淨,但有時 - 很好 - 您知道......您可以使用分析器來監視被處理的語句 – Shnugo
標準'SqlDataSource'類沒有任何'ExecuteSql'方法,我可以看到。你是使用自定義的'SqlDataSource'類,一個自定義的'ExecuteSql'擴展方法,還是我完全忽略了一些東西? – hvd