ADO重复SQL参数

时间:2014-12-08 16:27:18

标签: sql sql-server vba ado

我有一个使用具有相同参数的子查询的查询,所以它看起来像这样:

strSelect = _
"SELECT a.State, a.FirstName, a.LastName, b.JobTitle " & _
"FROM apples a " & _
"LEFT JOIN ( " & _
    "SELECT a.RecordNumber, " & _
    "CASE WHEN j.JobTitle IS NULL THEN j.JobTitle2 ELSE j.jobtitle END " & _
    "FROM apples a " & _
    "LEFT JOIN jobs j ON j.RecordNumber = a.RecordNumber " & _
    strWhere & _
    ") b ON b.RecordNumber = a.RecordNumber "

strWhere = _
"WHERE a.JobState = ? " & _
"AND a.JobDate = ? "

现实生活中的子查询与示例中的子查询相比毫无意义。

这里的问题是,如果我重复strWhere,那么有没有办法让参数适用于生成的strSQL = strSelect & strWhere语句?问题是我有两个参数,但它们是重复的,所以strSQL语句会有四个参数,但我宁愿在申报时不重复我的参数。

我有一种感觉,我错过了一些非常明显的东西。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您应该使用命名参数:

尝试使用命名参数,例如:

WHERE a.JobState = @JobDate

AND a.JobDate = @JobDate

然后,当您添加参数时,您只需要添加一次。它看起来像这样:

SqlParameter param  = new SqlParameter();
param.ParameterName = "JobDate";
param.Value         = theDate;