오라클 00911 오류가 발생합니다 (잘못된 문자). 나는 누군가가 내가 이해하도록 도울 수 있기를 바라고있다. 내 오라클 11g 데이터베이스에는 SQL 문을 실행하려면 다음 코드를 사용하고ORA 00911 SQL 절이 세미콜론으로 끝나는 Where Error?
:
private DataTable ExecuteQuery(DbCommand query) {
DataTable result = new DataTable();
using (DbConnection con = CreateConnection()) {
try {
query.Connection = con;
query.CommandTimeout = int.MaxValue; // don't impose a timeout
using (DbDataAdapter dataAdapter = factory.CreateDataAdapter()) {
dataAdapter.SelectCommand = query;
dataAdapter.Fill(result);
}
}
...
나는 그것이 잘 작동 "Select * from X;"
같은 DbCommand.CommandText
속성이 기능 무언가를 제공하지만,이 뜻 "Select * from x where y;"
주어진 경우 오라클 00911 예외를 던집니다. 그러나 세미콜론을 제거하면 잘 실행됩니다.
특정 유형의 명령문에서만 세미콜론으로 명령문을 끝내는 데 불법 문자 오류가 발생하는 이유를 알고 있습니까? 선명도
업데이트 :
내가 있던 세미콜론 원인이 오류 테스트하는 데 사용되는 정확한 쿼리 :
이 쿼리는 괜찮 았는데 : SELECT * FROM Machines;
이 쿼리는 0911 ORA 생성을 오류 : SELECT * FROM Machines WHERE ID = 47;
이 쿼리가 올바르게 작동하는 동안 : SELECT * FROM Machines WHERE ID = 47
< - 일부 업체의 (a SELECT COUNT(*)...
같은) 선행 추가 쿼리를 수행 및/또는 뭔가를 추가 - 단지 세미콜론 또한 사용되는 공급자가이 문제가 사용하는 DB 공급자에 따라 Oracle.DataAccess.Client
실행하려는 쿼리를 표시 할 수 있습니까? –
문자 그대로'Select * from X; '이고 또 다른 하나는'Select * from x where x.foo ='bar ';' – user12345613
''bar'' 주위의 인용 문자가 일반 인용 문자 아스키 39)? –