私は、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
このクエリは、この
new SqlDataSource().ExecuteSql("InsertDetails",
new List<object>() {_subSetId, _mainSetId, start, end});
「InsertDetails」のように見える呼び出すASP.NETのC#コードは、「ページング範囲です終了」「スタート」上記のクエリの名前です。
私の質問はです。このクエリのパラメータの前に "#*"が付いている機能や目的は何ですか?このクエリを他のテーブルに複製する必要がありますが、この "#* $ f0"、 "#* $ f1"、 "#* $ f2"、 "#* $ f3"のようにパラメータが渡される理由を知りたいのですが。
これらはT-SQLの列名や変数名の正式な形式ではありません(もちろん、大括弧で囲まれていない限り)。また、SqlDataSourceは特別な処理をしません。このクエリテキストはどうやって取得していますか? –
時にはそのような奇妙な文字が、コールの前に文字列レベルで置き換えられるプレースホルダとして使用されることがあります(ダイナミックコマンド生成のようなもの)...美しいものでも清潔でないものもありますが、時には - あなたも知っています... acutally処理されたステートメントを監視します – Shnugo
標準の 'SqlDataSource'クラスには私が見ることができる' ExecuteSql'メソッドはありません。あなたはカスタム 'SqlDataSource'クラス、カスタム' ExecuteSql'拡張メソッドを使用していますか、まったく見落としましたか? – hvd