Sql 在将参数传递给查询之前使用“*”散列和星号的目的是什么?

Sql 在将参数传递给查询之前使用“*”散列和星号的目的是什么?,sql,sql-server,asp.net-mvc,Sql,Sql Server,Asp.net Mvc,我有一个从ASP.NET应用程序调用的查询,它在同一个表详细信息中创建了行的子集,该子集由用于分页的参数$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.AC

我有一个从ASP.NET应用程序调用的查询,它在同一个表详细信息中创建了行的子集,该子集由用于分页的参数$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是上述查询的名称,start-end是分页范围


我的问题是:在这个查询中,参数前面有*是什么功能或用途??。我需要为其他表复制此查询,但想知道为什么参数是这样传递的*$f0、*$f1、*$f2和*$f3。

您要求我将注释作为答案。看来我猜对了:


有时这种奇怪的字符被用作占位符 在调用类型的动态命令之前在字符串级别替换 一代既不漂亮也不干净,但有时——很好- 你知道

您可以使用探查器监视 加工准确


快乐编码

当然,除非用括号转义,否则这些都不是T-SQL中列名或变量名的合法形式,SqlDataSource对此也没有做任何我能找到的特殊处理。你是如何得到这个查询文本的?有时这种奇怪的字符被用作占位符,在调用类动态命令生成之前在字符串级别被替换。。。既不漂亮也不干净,但有时-嗯-你知道。。。您可以使用探查器来监视正在处理的语句。标准的SqlDataSource类没有我可以看到的任何ExecuteSql方法。你是在使用自定义的SqlDataSource类,自定义的ExecuteSql扩展方法,还是我完全忽略了什么?@Shnugo,谢谢你的评论,如果你把这个放在哪里作为你的答案,我会接受的,因为那正是你的答案,这两个字符*用作占位符,可以在另一种方法中替换,以自定义SQL server和Oracle语法的查询,这很痛苦,但这是唯一的方法implemented@hvd,Yes Executesql是一种扩展方法