2014-03-19 4 views
0

에 절 내가 현재 NVARCHAR로 SQL 문을 지정하고이를 실행할 경우 구성을 사용하는 방법. 그러나 나는 이것이 어떻게 작동 하는지를 좋아하지 않는다.Kentico 쿼리

SQL

DECLARE @sqlStatement NVARCHAR(4000) 

SET @sqlStatement = N' 
    SELECT * 
    FROM CMS_User usr 
    WHERE 
    ( 
      usr.LastName LIKE ''%' + @Search + '%'' OR 
    )' 

IF(@SearchWhereClause IS NOT NULL) 
BEGIN 
    SET @sqlStatement = @sqlStatement+ N' AND (' + @SearchWhereClause + ')' 
END 

SET @sqlStatement = @sqlStatement+ N' ORDER BY usr.LastName' 

EXEC sp_executesql @statement = @sqlStatement 

코드

QueryDataParameters parameters = new QueryDataParameters(); 
parameters.Add("@Search", prefixText); 

//set configurabel searchWhereClause 
string searchWhereClause = SettingsKeyProvider.GetStringValue("WhereClause"); 
if (string.IsNullOrEmpty(searchWhereClause)) 
{ 
     searchWhereClause = null; 
} 
parameters.Add("@SearchWhereClause", searchWhereClause); 

DataSet ds = ConnectionHelper.ExecuteQuery("custom.DocType.Query", parameters); 

답변

1

대신 쿼리의 Kentico 매크로를 사용할 수 있습니다

SQL

SELECT * 
FROM CMS_User usr 
WHERE 
( 
    usr.LastName LIKE '%' + @Search + '%' OR 
) 
AND (usr.UserIsHidden IS NULL OR usr.UserIsHidden = 0) 
AND (##WHERE##) 
ORDER BY usr.LastName 

코드

ConnectionHelper.ExecuteQuery(string queryName, QueryDataParameters parameters, 
    string where);