Q&A

  • ParamByName으로 null 값을 전달시키는 방법이 있나요?
오라클에서 insert, Update 쿼리시에

ParamByName('필드명').? := null; 등과 같이

null 을 파라미터를 통해 전달할 수 있는 방법이 있나요?



쿼리 문장에 직접 null을 사용하면 에러 없이 수행되는데

ParamByName을 통해서는 null을 보낼 수 없네요.



조언을 부탁드립니다.

4  COMMENTS
  • Profile
    ag026 2001.09.14 20:12
    강호규 wrote:

    > 오라클에서 insert, Update 쿼리시에

    > ParamByName('필드명').? := null; 등과 같이

    > null 을 파라미터를 통해 전달할 수 있는 방법이 있나요?

    >

    > 쿼리 문장에 직접 null을 사용하면 에러 없이 수행되는데

    > ParamByName을 통해서는 null을 보낼 수 없네요.

    >

    > 조언을 부탁드립니다.

    답변)

    parambyname('fieldname').? := '';

    이렇게 해보십시요.

    혹시 될지 모르겠습니다.

  • Profile
    강호규 2001.09.14 20:21
    parambyname('fieldname').? := '';

    과는 다른 것 같습니다. 문자필드일 경우 위와 같이 해도 널과는 차이가 있습니다.

    쿼리를 직접해보면

    .... where 필드 is null 과

    .... where 필드='' 과는 결과가 다릅니다.



    널은 <> '' 이거든요...



    참고로 저의 경우에는 해당 필드가 문자가 아닌 숫자필드입니다.

    다시 한번 조언을 부탁드립니다.



    ---------------------------------------------------



    ag026 wrote:

    > 강호규 wrote:

    > > 오라클에서 insert, Update 쿼리시에

    > > ParamByName('필드명').? := null; 등과 같이

    > > null 을 파라미터를 통해 전달할 수 있는 방법이 있나요?

    > >

    > > 쿼리 문장에 직접 null을 사용하면 에러 없이 수행되는데

    > > ParamByName을 통해서는 null을 보낼 수 없네요.

    > >

    > > 조언을 부탁드립니다.

    > 답변)

    > parambyname('fieldname').? := '';

    > 이렇게 해보십시요.

    > 혹시 될지 모르겠습니다.

  • Profile
    아폴론 2001.09.14 23:15
    강호규 wrote:

    > parambyname('fieldname').? := '';

    > 과는 다른 것 같습니다. 문자필드일 경우 위와 같이 해도 널과는 차이가 있습니다.

    > 쿼리를 직접해보면

    > .... where 필드 is null 과

    > .... where 필드='' 과는 결과가 다릅니다.

    >

    > 널은 <> '' 이거든요...

    >

    > 참고로 저의 경우에는 해당 필드가 문자가 아닌 숫자필드입니다.

    > 다시 한번 조언을 부탁드립니다.

    >

    그냥 이무값도 입력을 않합니다.

    여러필드중 널값인 필드는 입력,수정에서 제외합니다.

    필드 a1,a2,a3에서 a3는 널값이다일때

    Insert into 000db

    ('a1,a2');

    Values

    (':p_a1, :p_a2');

    ParamByName('p_a1').?? := 000;

    ParamByName('p_a2').?? := 000;





  • Profile
    강호규 2001.09.15 00:25
    네, 답변고맙습니다.

    그것도 맞긴 맞는데요...

    필드개수와 이중에 널값을 가질 수 있는 필드들이 많아서

    일일히 널값여부를 조사해서 쿼리문장을 재생성하는 것이

    너무 번거로와서 그럽니다.



    엄밀히 따지자면

    답변해주신 내용을 조금 보강한다면

    저장할 값이 널인 경우에는

    해당필드를 쿼리에서 빼는 것보다는

    set ???=null 로 처리해주어야지

    정확히 널값으로 설정될 수 있습니다.



    답변 감사합니다.



    -------------------------------------------



    아폴론 wrote:

    > 강호규 wrote:

    > > parambyname('fieldname').? := '';

    > > 과는 다른 것 같습니다. 문자필드일 경우 위와 같이 해도 널과는 차이가 있습니다.

    > > 쿼리를 직접해보면

    > > .... where 필드 is null 과

    > > .... where 필드='' 과는 결과가 다릅니다.

    > >

    > > 널은 <> '' 이거든요...

    > >

    > > 참고로 저의 경우에는 해당 필드가 문자가 아닌 숫자필드입니다.

    > > 다시 한번 조언을 부탁드립니다.

    > >

    > 그냥 이무값도 입력을 않합니다.

    > 여러필드중 널값인 필드는 입력,수정에서 제외합니다.

    > 필드 a1,a2,a3에서 a3는 널값이다일때

    > Insert into 000db

    > ('a1,a2');

    > Values

    > (':p_a1, :p_a2');

    > ParamByName('p_a1').?? := 000;

    > ParamByName('p_a2').?? := 000;

    >

    >