2012-07-10 3 views
2

select 명령문에서 별칭을 사용할 때 외계인처럼 취급되는 이유는 무엇입니까?이 별칭이 지정된 SQL 열에 문제가 있습니까?

나는 이것이 항상 그런 것은 상상할 수는 없지만,이 코드 변경했다 :이에 ...

const string query = 
    @"SELECT C.PLATYPUSCLIENTID, E.DEWDROPNAME FOGGY 
    FROM DUCKBILLACCOUNT B, 
     PLATYPUSCLIENT C, 
     ENTITY E 
    WHERE B.DUCKBILLNUMBER = :PLATYPUSACCOUNTID 
     AND B.DUCKBILLACCOUNTABCID = C.DUCKBILLACCOUNTABCID 
     AND C.PLATYPUSCLIENTABCID = E.ABCID 
    ORDER BY FOGGY, PLATYPUSCLIENTID"; 
    try { 
     oc.Open(); 
     using (OracleCommand ocmd = new OracleCommand(query, oc)) { 
      ocmd.Parameters.Add("PLATYPUSACCOUNTID", PLATYPUSACCOUNTID); 
      using (OracleDataReader odr = ocmd.ExecuteReader()) { 
       while (odr.Read()) { . . . 

을 :

const string query = 
    @"SELECT C.PLATYPUSCLIENTID, E.DEWDROPNAME 
    FROM DUCKBILLACCOUNT B, 
     PLATYPUSCLIENT C, 
     ENTITY E 
    WHERE B.DUCKBILLNUMBER = :PLATYPUSACCOUNTID 
     AND B.DUCKBILLACCOUNTABCID = C.DUCKBILLACCOUNTABCID 
     AND C.PLATYPUSCLIENTABCID = E.ABCID 
    ORDER BY DEWDROPNAME, PLATYPUSCLIENTID"; 
    try { 
     oc.Open(); 
     using (OracleCommand ocmd = new OracleCommand(query, oc)) { 
      ocmd.Parameters.Add("PLATYPUSACCOUNTID", PLATYPUSACCOUNTID); 
      using (OracleDataReader odr = ocmd.ExecuteReader()) { 
       while (odr.Read()) { . . . 

을 ...에 그걸 얻기 위해 런타임에 val을 반환합니다 (첫 번째 버전에서 "IndexOutOfRangeException"을 얻었습니다)

+0

SQL Developer 내에서 DB에 대해 원하는대로 쿼리를 실행합니까? 이전에 'AS' 키워드를 사용해야한다는 것을 기억하지만, Oracle SQL 엔진이 기대하든 안하든 기억하지 못합니다. –

+0

@Jesse : SQL Developer는 무엇인지 모르지만 TOAD에서는 잘 실행됩니다. –

+0

SQL Developer는 DB 관리를위한 Oracle의 GUI 도구입니다. SQL Server 용 Microsoft의 SSMS와 비슷합니다. http://www.oracle.com/technetwork/developer-tools/sql-developer/overview/index.html –

답변

4

별칭을 인용해야합니다.

E.DEWDROPNAME 'FOGGY' ... 
+0

작은 것들 ... – Wolfram

+0

그건 사실입니다! :-) – Shawn