2013-05-17 1 views
0

데이터베이스에 Microsoft Visual Studio C# 2005와 Oracle을 사용하고 있습니다. SQL Statement 코드 블록이 있습니다. 나는 그것을 디버깅하려고으로키워드를 찾을 수 없습니다. 어디에 있습니까?

con = new OracleConnection(conStr); 
      con.Open(); 
query = " SELECT EQPID, " + 
        " DECODE(CUTOFF_DATE, '20120501', SUM(TKINQTY))'20120501', " + 
" DECODE(CUTOFF_DATE, '20120502', SUM(TKINQTY))'20120502', " + 
        " DECODE(CUTOFF_DATE, '20120503', SUM(TKINQTY))'20120503' " + 
        " FROM DAILY_DATA " + 
        " WHERE CUTOFF_DATE BETWEEN '20120501' AND '20120503' " + 
        " AND EQPID LIKE 'MS-%' " + 
        " GROUP BY CUTOFF_DATE, EQPID " + 
        " ORDER BY CUTOFF_DATE, EQPID"; 
da = new OracleDataAdapter(); 
da.SelectCommand = new OracleCommand(query, con); 
      dt = new DataTable(); 
      da.Fill(dt); 
      table.DataSource = dt; 
con.Close(); 

, 나는의 에러 메시지를 가지고 계속 : 여기

코드입니다 키워드에서

가 발견되지

그러나으로 예상 I 오라클에서 시험해 보았습니다. 아무런 오류없이 실행되었습니다.

고맙습니다. =)

+0

쿼리 구문이 유효하지 않으며 Oracle에서 직접 실행되지 않습니다. 단순히 SQL 부분을 복사하여 SQL 유틸리티에 붙여넣고 큰 따옴표와 더하기 기호를 모두 제거한 다음 실행하십시오. 유효하지 않습니다. (힌트 : 두 개의 'SUM'문 바로 뒤 부분을 보면 두 부분 모두 올바르지 않습니다.) –

답변

1

결과 열의 이름을 20120501, 2012050220120503이라고 가정하면 큰 따옴표 대신 작은 따옴표를 사용합니다. 문제를 해결하려면

SELECT EQPID, " + 
" DECODE(CUTOFF_DATE, '20120501', SUM(TKINQTY))\"20120501\", " + 
" DECODE(CUTOFF_DATE, '20120502', SUM(TKINQTY))\"20120502\", +... 
--            ^^  ^^ 

으로 쿼리를 변경하십시오. 쿼리 문자열은 C# 문자열 안에 있기 때문에 큰 따옴표는 백 슬래시로 이스케이프해야합니다.

+0

감사합니다. =) – QKWS

관련 문제