오라클과 쿼리하는 수집 매개 변수

c# dapper oracle

문제

WEB API 서비스에서 매개 변수 배열을 전달하는 동안 문제가 발생했습니다.

public class SampleController : ApiController
{
   public string Getdetails([FromUri] int[] id) 
   {
    var inconditions = id.Distinct().ToArray();
    using (var dbConn = new OracleConnection("DATA SOURCE=h;PASSWORD=C;PERSIST SECURITY INFO=True;USER ID=T"))
    {
        dbConn.Open();
        var strQuery = "SELECT PRIO_CATEGORY_ID AS PRIO, LANG_ID AS LANG, REC_DATE AS REC, REC_USER AS RECUSER, DESCR, COL_DESCR AS COL, ROW_DESCR AS DROW, ABBR FROM STCD_PRIO_CATEGORY_DESCR WHERE REC_USER  IN (:p)";
        var queryResult = dbConn.Query<SamModel>(strQuery, new { p = inconditions });
        return JsonConvert.SerializeObject(queryResult);
    }
}

API를 http://localhost:35432/api/Sample?id=1&id=83 로 호출하는 동안 var queryResult = dbConn.Query(strQuery); 에서 오류가 발생합니다 var queryResult = dbConn.Query(strQuery);

{ "ORA-00907 : 오른쪽 괄호 누락"}

여기에 이미지 설명을 입력하십시오.

모든 괄호를 검사하고 모든 것이 좋게 보입니다.

수락 된 답변

컬렉션 매개 변수를 괄호 안에 묶을 필요가 없습니다. Dapper는 찾기 및 바꾸기가 아니라 수집 매개 변수를 자체적으로 처리 할 수있는 스마트 한 도구입니다. 이 시도:

... WHERE REC_USER IN :p

List Support 섹션을 확인하십시오.

생성 된 쿼리 종류 (:p) 경우 :

... WHERE REC_USER IN ((1,2,3))

인기 답변

@lorond는 그의 코멘트와 대답에 맞춰 그것을 얻었다.

그가 제공 한 링크는 귀하의 코드가

public class SampleController : ApiController {
   public string Getdetails([FromUri] int[] id) {
    var inconditions = id.Distinct().ToArray();
    using (var dbConn = new OracleConnection("DATA SOURCE=h;PASSWORD=C;PERSIST SECURITY INFO=True;USER ID=T")) {
        dbConn.Open();
        var strQuery = "SELECT PRIO_CATEGORY_ID AS PRIO, LANG_ID AS LANG, REC_DATE AS REC, REC_USER AS RECUSER, DESCR, COL_DESCR AS COL, ROW_DESCR AS DROW, ABBR FROM STCD_PRIO_CATEGORY_DESCR WHERE REC_USER IN @p";
        var queryResult = dbConn.Query<SamModel>(strQuery, new { p = inconditions });
        return JsonConvert.SerializeObject(queryResult);
    }
}


아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow