안녕하세요...
ms-sql에서 insert할때 에러가 자꾸 납니다...
파라미터는 제대로 넘어가는 것 같은데...
실행만 시키면
"operation not applicable" 라는 메세지가 뜹니다
도와주세요
procedure tform1.beasong_ok(wbl_no:string;dlv_end_dt:string;dlv_end_hms:string;insuer_r:string;insuer_nm:string;gb:string);
//배송완료 fun_code=05
var tranyesno : boolean;
begin
tranyesno := true;
database1.StartTransaction ;
try
begin
query1.close;
query1.sql.clear;
query1.sql.add('insert into itm_mob_dlv_cpl (wbl_no,dlv_end_dt,dlv_end_hms,insuer_r,insuer_nm,gb) values (:n1,:n2,:n3,:n4,:n5,:n6)');
query1.ParamByName('n1').asstring := trim(wbl_no);
query1.parambyname('n2').asstring := trim(dlv_end_dt);
query1.parambyname('n3').asstring := trim(dlv_end_hms);
query1.parambyname('n4').asstring := trim(insuer_r);
query1.parambyname('n5').asstring := trim(insuer_nm);
query1.parambyname('n6').asstring := trim(gb);
//여기까지 확인해보면 파라미터에 값은 제대로 넘어갑니다만
query1.ExecSQL ;
//여기서 실행을 하면 에러가 납니다...
query1.sql.savetofile('c:insert.txt');
end;
except
tranyesno := false;
end; //try end
참 그리구요....
또하나 궁금한게 있는데요 하나의 프로시저에서 또 다른 프로시저를 호출해도 되나요?
> 안녕하세요...
> ms-sql에서 insert할때 에러가 자꾸 납니다...
> 파라미터는 제대로 넘어가는 것 같은데...
> 실행만 시키면
> "operation not applicable" 라는 메세지가 뜹니다
> 도와주세요
>
> procedure tform1.beasong_ok(wbl_no:string;dlv_end_dt:string;dlv_end_hms:string;insuer_r:string;insuer_nm:string;gb:string);
> //배송완료 fun_code=05
> var tranyesno : boolean;
> begin
>
> tranyesno := true;
> database1.StartTransaction ;
> try
> begin
> query1.close;
> query1.sql.clear;
> query1.sql.add('insert into itm_mob_dlv_cpl (wbl_no,dlv_end_dt,dlv_end_hms,insuer_r,insuer_nm,gb) values (:n1,:n2,:n3,:n4,:n5,:n6)');
> query1.ParamByName('n1').asstring := trim(wbl_no);
> query1.parambyname('n2').asstring := trim(dlv_end_dt);
> query1.parambyname('n3').asstring := trim(dlv_end_hms);
> query1.parambyname('n4').asstring := trim(insuer_r);
> query1.parambyname('n5').asstring := trim(insuer_nm);
> query1.parambyname('n6').asstring := trim(gb);
> //여기까지 확인해보면 파라미터에 값은 제대로 넘어갑니다만
>
> query1.ExecSQL ;
> //여기서 실행을 하면 에러가 납니다...
>
> query1.sql.savetofile('c:insert.txt');
> end;
> except
> tranyesno := false;
>
> end; //try end
>
> 참 그리구요....
> 또하나 궁금한게 있는데요 하나의 프로시저에서 또 다른 프로시저를 호출해도 되나요?
>
쿼리문을 보면 스토어드 프로시져를 사용하는 것이 아니라 일반 쿼리문인듯 합니다.
프로시져에 넘긴 파라미터
'wbl_no:string;dlv_end_dt:string;dlv_end_hms:string;insuer_r:string..' 등 이
테이블의 필드명이 맞는지 의심이 됩니다. 필드명을 파라미터로 넘기지는 않을 것
같은데 또 뒤에 그 값을 input parameter에 대입하셨는데 이 부분이 문법은 맞으나
이해가 되지를 않는군요.
StoredProc 컴포넌트 하나에 여러개의 프로시져를 실행할 수는 있습니다.
실행시 마다 파라미터를 프로시져에 맞게 생성시켜주면 됩니다.
with StoredProc do begin
Close;
Params.Clear;
//새 프로시져 할당
StoredProcName := 'proc_name';
params.CreateParam(필드타입,파라미터이름,파라미터 타입);
//파라미터 수에 맞게 작성해 주고
ParamByName('파라미터').AsType := 값;
......
ExecProc;
end;
이렇게 해 주시면 됩니다만 상당히 귀찮은 작업이지요.