Q&A

  • [아주급한 질문] Query Error
Oracle DB를 쓰고 있습니다.

그런데 Query문을 실행시키는데있어서, sql explorer 에서는 잘되는 데 유독 델파이 프로그램내에서 실행을 시키면

'query block has incorrect number of result columns'라는 Error 메세지를 띠우고 있는데, Query문이 좀 긴편이어서 6개의 변수로 나누어

Close;

Sql.Clear;

Sql.Add(sSql1);

Sql.Add(sSql1_1);

Sql.Add(sSql2);

Sql.Add(sSql2_1);

Sql.Add(sSql3);

Sql.Add(sSql3_1);

Open

실행을 시켜보아도 똑같습니다.



3개의 Table을 join 시키는 것인데말입니다..

아시는 분은 제발좀 가르켜 주세요....

3  COMMENTS
  • Profile
    바보감자 2000.10.09 22:47
    델 wrote:

    > Oracle DB를 쓰고 있습니다.

    > 그런데 Query문을 실행시키는데있어서, sql explorer 에서는 잘되는 데 유독 델파이 프로그램내에서 실행을 시키면

    > 'query block has incorrect number of result columns'라는 Error 메세지를 띠우고 있는데, Query문이 좀 긴편이어서 6개의 변수로 나누어

    > Close;

    > Sql.Clear;

    > Sql.Add(sSql1);

    > Sql.Add(sSql1_1);

    > Sql.Add(sSql2);

    > Sql.Add(sSql2_1);

    > Sql.Add(sSql3);

    > Sql.Add(sSql3_1);

    > Open

    > 실행을 시켜보아도 똑같습니다.

    >

    > 3개의 Table을 join 시키는 것인데말입니다..

    > 아시는 분은 제발좀 가르켜 주세요....



    쿼리문을. 적어주셔야 답변을 해드릴수있을꺼같네요..

    저러케 적어 놓으시면..몰르잖아요..

    쿼리 어케 쓰셨는지.. ^^;;;



  • Profile
    2000.10.09 23:10
    바보감자 wrote:

    > 델 wrote:

    > > Oracle DB를 쓰고 있습니다.

    > > 그런데 Query문을 실행시키는데있어서, sql explorer 에서는 잘되는 데 유독 델파이 프로그램내에서 실행을 시키면

    > > 'query block has incorrect number of result columns'라는 Error 메세지를 띠우고 있는데, Query문이 좀 긴편이어서 6개의 변수로 나누어

    > > Close;

    > > Sql.Clear;

    > > Sql.Add(sSql1);

    > > Sql.Add(sSql1_1);

    > > Sql.Add(sSql2);

    > > Sql.Add(sSql2_1);

    > > Sql.Add(sSql3);

    > > Sql.Add(sSql3_1);

    > > Open

    > > 실행을 시켜보아도 똑같습니다.

    > >

    > > 3개의 Table을 join 시키는 것인데말입니다..

    > > 아시는 분은 제발좀 가르켜 주세요....

    >

    > 쿼리문을. 적어주셔야 답변을 해드릴수있을꺼같네요..

    > 저러케 적어 놓으시면..몰르잖아요..

    > 쿼리 어케 쓰셨는지.. ^^;;;

    >





    죄송합니다.

    급한마음에..

    sSql1 := ' ( SELECT '

    + ' a.DMAST1, a.DMAST2, a.LOCA1, a.LOCA2, '

    + ' a.LOCA3, a.LOCA4, a.LOCA5, a.LOCA6, '

    + ' a.LOCA7, a.LOCA8, a.LOCA9, a.LOCA10, '

    + ' a.LOCA11, a.LOCA12, a.LOCA13_1, a.LOCA13_2, '

    + ' a.LOCA13_3, a.LOCA13_4, a.LOCA13_5, a.LOCA14, '

    + ' a.LOCA15, a.LOCA16, a.LOCA17, a.LOCA18, '

    + ' a.LOCA19, a.LOCA20, '

    + ' b.SCHE1, b.SCHE2, b.SCHE3, b.SCHE4, '

    + ' b.SCHE5, b.SCHE6, '

    + ' b.LOCA3 as s_LOCA3, b.LOCA4 as s_LOCA4, b.LOCA5 as s_LOCA5, '

    + ' b.LOCA6 as s_LOCA6, b.LOCA7 as s_LOCA7, b.LOCA8 as s_LOCA8, '

    + ' b.LOCA9 as s_LOCA9, b.LOCA10 as s_LOCA10, b.LOCA11 as s_LOCA11, '

    + ' b.LOCA12 as s_LOCA12, b.LOCA13_1 as s_LOCA13_1, b.LOCA13_2 as s_LOCA13_2, '

    + ' b.LOCA13_3 as s_LOCA13_3, b.LOCA13_4 as s_LOCA13_4, b.LOCA13_5 as s_LOCA13_5, '

    + ' b.LOCA14 as s_LOCA14, b.LOCA17 as s_LOCA17, b.LOCA18 as s_LOCA18, '

    + ' b.LOCA19 as s_LOCA19, b.LOCA20 as s_LOCA20, '

    + ' c.DMAST3, c.DMAST4, c.DMAST5 '

    + ' From LOCA a, SCHE b, DMAST c ';



    sSql1_1 := ' WHERE A.DMAST1 = B.DMAST1(+) '

    + ' AND A.DMAST2 = B.DMAST2(+) '

    + ' AND A.DMAST1 = C.DMAST1 '

    + ' AND A.DMAST2 = C.DMAST2 '

    + ' AND (((TO_CHAR(A.LOCA1, ''yyyymmdd'') || TO_CHAR(A.LOCA2, ''000000'')) '

    + ' BETWEEN (TO_CHAR(B.SCHE1, ''yyyymmdd'') || TO_CHAR(B.SCHE2, ''000000'')) '

    + ' AND (TO_CHAR(B.SCHE3, ''yyyymmdd'') || TO_CHAR(B.SCHE4, ''000000''))) '

    + ' OR B.SCHE1 IS NULL) '

    + ' AND a.DMAST1 = :DMAST1 '

    + ' AND Upper(a.DMAST2) Like :DMAST2 '

    + ' AND a.LOCA1 Between :LOCA1 And :LOCA2 ';



    sSql2 := ' UNION '

    + ' ( SELECT '

    + ' a.DMAST1, a.DMAST2, a.LOCA1, a.LOCA2, '

    + ' a.LOCA3, a.LOCA4, a.LOCA5, a.LOCA6, '

    + ' a.LOCA7, a.LOCA8, a.LOCA9, a.LOCA10, '

    + ' a.LOCA11, a.LOCA12, a.LOCA13_1, a.LOCA13_2, '

    + ' a.LOCA13_3, a.LOCA13_4, a.LOCA13_5, a.LOCA14, '

    + ' a.LOCA15, a.LOCA16, a.LOCA17, a.LOCA18, '

    + ' a.LOCA19, a.LOCA20, '

    + ' To_Date(''20000101'', ''yyyymmdd'') SCHE1, 0 SCHE2, '

    + ' To_Date(''20000101'', ''yyyymmdd'') SCHE3, 0 SCHE4, '

    + ' To_Date(''20000101'', ''yyyymmdd'') SCHE5, 0 SCHE6, '

    + ' '' s_LOCA3, '' s_LOCA4, 0 s_LOCA5, 0 s_LOCA6, '

    + ' 0 s_LOCA7, '' s_LOCA8, '' s_LOCA9, '' s_LOCA10, '

    + ' 0 s_LOCA11, 0 s_LOCA12, 0 s_LOCA13_1, 0 s_LOCA13_2, '

    + ' 0 s_LOCA13_3, 0 s_LOCA13_4, 0 s_LOCA13_5, 0 s_LOCA14, '

    + ' '' s_LOCA17, '' s_LOCA18, '' s_LOCA19, 0 s_LOCA20, '

    + ' c.DMAST3, c.DMAST4, c.DMAST5 '

    + ' From LOCA a, SCHE b, DMAST c ';



    sSql2_1 := ' Where A.DMAST1 = C.DMAST1 '

    + ' AND A.DMAST2 = C.DMAST2 '

    + ' AND NOT ((TO_CHAR(A.LOCA1, ''yyyymmdd'') || TO_CHAR(A.LOCA2, ''000000'')) '

    + ' BETWEEN (TO_CHAR(B.SCHE1, ''yyyymmdd'') || TO_CHAR(B.SCHE2, ''000000'')) '

    + ' AND (TO_CHAR(B.SCHE3, ''yyyymmdd'') || TO_CHAR(B.SCHE4, ''000000''))) '

    + ' AND a.DMAST1 = :DMAST1 '

    + ' AND Upper(a.DMAST2) Like :DMAST2 '

    + ' AND a.LOCA1 Between :LOCA1 And :LOCA2 ';



    sSql3 := ' MINUS '

    + ' SELECT '

    + ' a.DMAST1, a.DMAST2, a.LOCA1, a.LOCA2, '

    + ' a.LOCA3, a.LOCA4, a.LOCA5, a.LOCA6, '

    + ' a.LOCA7, a.LOCA8, a.LOCA9, a.LOCA10, '

    + ' a.LOCA11, a.LOCA12, a.LOCA13_1, a.LOCA13_2, '

    + ' a.LOCA13_3, a.LOCA13_4, a.LOCA13_5, a.LOCA14, '

    + ' a.LOCA15, a.LOCA16, a.LOCA17, a.LOCA18, '

    + ' a.LOCA19, a.LOCA20, '

    + ' To_Date(''20000101'', ''yyyymmdd'') SCHE1, 0 SCHE2, '

    + ' To_Date(''20000101'', ''yyyymmdd'') SCHE3, 0 SCHE4, '

    + ' To_Date(''20000101'', ''yyyymmdd'') SCHE5, 0 SCHE6, '

    + ' '' s_LOCA3, '' s_LOCA4, 0 s_LOCA5, 0 s_LOCA6, '

    + ' 0 s_LOCA7, '' s_LOCA8, '' s_LOCA9, '' s_LOCA10, '

    + ' 0 s_LOCA11, 0 s_LOCA12, 0 s_LOCA13_1, 0 s_LOCA13_2, '

    + ' 0 s_LOCA13_3, 0 s_LOCA13_4, 0 s_LOCA13_5, 0 s_LOCA14, '

    + ' '' s_LOCA17, '' s_LOCA18, '' s_LOCA19, 0 s_LOCA20, '

    + ' c.DMAST3, c.DMAST4, c.DMAST5 '

    + ' From LOCA a, SCHE b, DMAST c ';



    sSql3_1 := ' Where A.DMAST1 = C.DMAST1 '

    + ' AND A.DMAST2 = C.DMAST2 '

    + ' AND ((TO_CHAR(A.LOCA1, ''yyyymmdd'') || TO_CHAR(A.LOCA2, ''000000'')) '

    + ' BETWEEN (TO_CHAR(B.SCHE1, ''yyyymmdd'') || TO_CHAR(B.SCHE2, ''000000'')) '

    + ' AND (TO_CHAR(B.SCHE3, ''yyyymmdd'') || TO_CHAR(B.SCHE4, ''000000''))) '

    + ' And a.DMAST1 = :DMAST1 '

    + ' AND Upper(a.DMAST2) Like :DMAST2 '

    + ' AND a.LOCA1 Between :LOCA1 And :LOCA2 ) '

    + ' ) '

    + ' ORDER BY DMAST1, DMAST2, LOCA1, LOCA2 ';

    with Query_RptLOCA do

    begin

    Close;

    Sql.Clear;

    Sql.Add(sSql1);

    Sql.Add(sSql1_1);

    Sql.Add(sSql2);

    Sql.Add(sSql2_1);

    Sql.Add(sSql3);

    Sql.Add(sSql3_1);

    ParamByName('DMAST1').AsString := vm_rOrga.sOrga1;

    ParamByName('DMAST2').Asstring := UpperCase(Edit_DMAST2_F7.Text + '%');

    ParamByName('LOCA1').AsDateTime := KZDateEdit_Loca1From.Date;

    ParamByName('LOCA2').AsDateTime := KZDateEdit_Loca1To.Date;

    Open;

    end;

  • Profile
    성더기 2000.10.10 02:35
    유니온하는 위, 아래의 select하는 필드의 갯수가 틀려서 그런거카튼디..

    아닌가?...ㅡ.ㅡ;;;