Q&A

  • ORACLE에서 쿼리가 안되는 이유?
오라클과 델5를 연결하였습니다.

SQL.Add('select * from Table where MAIN_ID = ''USER''');

를 하면 MAIN_ID가 'USER'인 데이터를 잘 가져옵니다.

그런데...

SQL.Add('select * from Table where MAIN_ID = :main');

Params[0].AsString := 'USER';

이렇게 변수로 넘기면 데이터를 못가져 오는군요...



근데 이 MAIN_ID라는 놈이 PK거든요....

다른 Column을 가지고 하면 또 잘 가져옵니다.



그래서 생각에 이 PK가 문제 인가 생각도 해 봤는데...

이런 경우 겪으신 분 있으시면 좀 알려주세요...



MS-SQL만 쓰다가 ORACLE처음 쓰는데 생각외로 이것저것 많이 걸리네요...

그럼...



4  COMMENTS
  • Profile
    병부잡이 2000.06.30 07:10
    ParambyName('name').AsString := 'USER';





    이경배 wrote:

    > 오라클과 델5를 연결하였습니다.

    > SQL.Add('select * from Table where MAIN_ID = ''USER''');

    > 를 하면 MAIN_ID가 'USER'인 데이터를 잘 가져옵니다.

    > 그런데...

    > SQL.Add('select * from Table where MAIN_ID = :main');

    > Params[0].AsString := 'USER';

    > 이렇게 변수로 넘기면 데이터를 못가져 오는군요...

    >

    > 근데 이 MAIN_ID라는 놈이 PK거든요....

    > 다른 Column을 가지고 하면 또 잘 가져옵니다.

    >

    > 그래서 생각에 이 PK가 문제 인가 생각도 해 봤는데...

    > 이런 경우 겪으신 분 있으시면 좀 알려주세요...

    >

    > MS-SQL만 쓰다가 ORACLE처음 쓰는데 생각외로 이것저것 많이 걸리네요...

    > 그럼...

    >

  • Profile
    이경배 2000.06.30 18:51
    병부잡이 wrote:

    > ParambyName('name').AsString := 'USER';



    음..아무래도 이 얘기가 나올것 같았는데... 어제 글에 쓸거을....^^;



    네! 병부잡이님...그렇게도 해봤는데요...

    안됩니다...

    근데 제가 쓴 방법과 이렇게 사용하는게 어떤 차이가 있죠?

    단지 이름때문에 순서를 안지켜도 된다는 건지....

    알고 싶습니다.

  • Profile
    nilriri 2000.06.30 19:07
    이런 문제는 여러번 언급되었던 문제인데...



    sql과 oracle의 차이입니다.



    오라클에서는 char(5)에

    'a'라고 입력하면 저장되어있는값은 'a '으로저장...

    '' 라고 입력하면 null 이 저장.... 물론 not null제약조건이 설정되어있으면 에러...



    에스큐엘에서는 char(5)에

    'a'라고 입력하면 저장되어있는값은 'a'로저장

    'a '라고 입력해도 'a'로 저장됩니다.

    ''를 입력하면 길이가 없는 empty string으로 저장이 되더군요..



    그러니까 오라클은 자리수에 맞게 뒤쪽에 space를 삽입하고

    에스큐엘은 우측의 공백문자를 제거하고 저장을 하더군요..



    물론 varchar를 쓰면 이런 문제는 발생하지 않습니다.



    아마도 pk로 설정된 컬럼의 길이가 'USER'라는 글자의 길이인 4보다 클거라

    생각합니다. 길이를 맞추어 주시던지 아니면 VARCHAR를 사용하시던지

    그것도 아니면 질문에서 하신것처럼 문자열에 결합해서 사용하시면 될겁니다.



    파워빌더에서는 그렇지 않던데 델피의 PARAMBYNAME을 쓰면 이런 문제가 있더군요

    아마 PARAMBYNAME라는것이 내부적으로 TRIM을 하기 때문이라고 잠정결론을 내렸슴다.



    혹시 저의 답변이 틀렸다면 연락주시고



    고수님들 다른 좋은 답변...



    그럼...





    이경배 wrote:

    > 병부잡이 wrote:

    > > ParambyName('name').AsString := 'USER';

    >

    > 음..아무래도 이 얘기가 나올것 같았는데... 어제 글에 쓸거을....^^;

    >

    > 네! 병부잡이님...그렇게도 해봤는데요...

    > 안됩니다...

    > 근데 제가 쓴 방법과 이렇게 사용하는게 어떤 차이가 있죠?

    > 단지 이름때문에 순서를 안지켜도 된다는 건지....

    > 알고 싶습니다.

  • Profile
    이경배 2000.06.30 19:13
    님의 말씀이 맞습니다.

    그렇게 하니 확실히 되는군여...



    그런 차이가 있다니...

    하여간 꽤나 골치아프게 생겼군여...



    모델링에서 Key값들 크기를 다시 재조정을 해야 할듯...



    감사합니다.

    • 허진
    • 2000.06.30 18:53
    • 6 COMMENTS
    • /
    • 0 LIKES
    • 코비
      2000.07.01 00:40
    • 최용일
      2000.06.30 20:31
    • 타락천사
      2000.06.30 20:50
    • 최용일
      2000.06.30 21:20
    • 타락천사
      2000.06.30 22:26
    • 최용일
      2000.06.30 22:48
    • 김성훈
    • 2000.06.30 15:03
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이준해
      2000.06.30 20:17
      트리뷰의 자료를 저장하는 일반적인 방법은 DB의 Table을 이용하는 겁니다. 파일로 저장할려면 트리노...
    • 장영철
    • 2000.06.30 12:08
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 갱수
      2000.07.01 00:17
      장영철 wrote: > ISAPI내에서 소켓을 써서 > > 데이타 처리가 가능한지 여쭙 습니다.. > > 만약 된...
    • 윤티
      2000.07.02 01:24
      임형호 wrote: > 현재 작업표시줄에 나타나있는 프로그램의 목록을 구하는 방법을 찾습니다. > 아니면 C...
    • 심동훈
      2000.07.01 00:47
      어린왕자 wrote: > 안녕하세요..델초보 어린왕자입니다. > 오늘의 질문은여... > 바로~ 쓰레드라는 놈입...
    • 어린왕자
      2000.07.01 00:58
      저가 하는 것은... 폼을 먼저 만들어서 보여주고.. 쓰레드로.. 쿼리를 Open시켜서 DBGrid와 연결을 해...
    • 심동훈
      2000.07.01 01:27
      어린왕자 wrote: > 저가 하는 것은... > 폼을 먼저 만들어서 보여주고.. > > 쓰레드로.. > 쿼리를 Op...
    • Mr.Q
    • 2000.06.30 09:07
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 임형호
      2000.06.30 09:45
      Mr.Q wrote: > TClipboard를 var밑에 선언했는데.. undelared identifier TClipBoard라고 나옵니다. > 지...
    • 최월자
      2000.12.12 23:53
      lee wrote: > > 주민등록번호를 이용하여 한번에 남녀 인원수를 구할려고 합니다. > 파라독스에서는 잘...
    • 조대호
      2000.07.01 01:20
      박정모 wrote: > > Windows system이 제공하는 리소스 측정기를 켜놓고 델파이로 만든 > 응용 프로그...
    • 임형호
      2000.06.30 06:11
      사발우성 wrote: > > 안뇽 하신가엽..... 고수님 엔드 중수님들.. > > 사발이가 할일 이없어서리...
    • 이경배
    • 2000.06.30 04:34
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 병부잡이
      2000.06.30 07:10
      ParambyName('name').AsString := 'USER'; 이경배 wrote: > 오라클과 델5를 연결하였습니다. > SQL....
    • 이경배
      2000.06.30 18:51
      병부잡이 wrote: > ParambyName('name').AsString := 'USER'; 음..아무래도 이 얘기가 나올것 같았는데...
    • nilriri
      2000.06.30 19:07
      이런 문제는 여러번 언급되었던 문제인데... sql과 oracle의 차이입니다. 오라클에서는 char(5)에 ...
    • 이경배
      2000.06.30 19:13
      님의 말씀이 맞습니다. 그렇게 하니 확실히 되는군여... 그런 차이가 있다니... 하여간 꽤나 골치아프...
    • 성호종
      2000.06.30 04:00
      타락천사 wrote: > 안녕하세여..타락임다..^^ > > 구창민뉨의 느끼한 웃음보구... 웃었어여...^^ > ...
    • 타락천사
      2000.06.30 04:03
      안녕하세여.. 타락임다..^^ 답변 감사함다...^^ 그 생각은 저두 했는데, 왠지 편법인거 가타서 찜찜...
    • 김영해
      2000.06.30 05:37
      타락천사 wrote: > 안녕하세여.. 타락임다..^^ > > 답변 감사함다...^^ > > 그 생각은 저두 했는데,...
    • 타락천사
      2000.06.30 18:14
      안녕하세여..타락임다..^^ 흠 글
    • 성호종
      2000.06.30 04:06
      select field1, field2, field3, count(field) from table group by 1,2,3; 해서 4번째 필드의 결과를 ...
    • 왕초보
    • 2000.06.30 02:43
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 성호종
      2000.06.30 04:03
      왕초보 wrote: > C++의 TCHAR을 대신할 변수형 좀 갈켜 주세요... 제가 알기로는 Delphi에서는 Point형Ch...
    • 왕초보
      2000.06.30 04:10
      성호종 wrote: > 왕초보 wrote: > > C++의 TCHAR을 대신할 변수형 좀 갈켜 주세요... > 제가 알기로는 D...
    • 성호종
      2000.06.30 05:43
      왕초보 wrote: 우선 Delphi에서 PointChar은 PChar이고요... TCHAR처럼 쓰시려면 Unicode에 관련된 API를...
    • 왕초보
      2000.06.30 19:44
      답변 감사 드립니다... Windows Shell Programming을 공부하고 있는데요... Windows Shell 에서 아마...