ADOStoredProc1 사용시 Parameters.ParamByName('UserID2').Value 를 전달하여 쿼리결과값을 문자,정수 등 여러개를 전달받아야 하는데 "ADOStoredProc1 : Parameter 'UserID2' not found" 에러가 나네요.(ADOQuery에서는 Parameter를 생성하지 않고도 잘되는데.)
그래서 Parameters.CreateParameter('UserID2',ftString,pdInput,20,'test')로 전달하고
Parameters.CreateParameter('SysID',ftInteger,pdOutput,0,Null)로 결과값을 받으면 되지만
저장프로시저 이름과 전달받을 결과값이 가변하기 때문에 사용이 어려워서.....
처음에 언급한 것처럼 하려면 ADOStoredProc1의 특성 중 무엇을 수정해야 하는지요?
//원하는 방법 - ADOQuery와 비슷하게
with ADOStoredProc1 do
begin
Connection := ADOConnection1;
close;
ProcedureName := 'spDStatQuery;1';
Parameters.ParamByName('UserID2').Value := 'test';
Parameters.ParamByName('QDate').Value := '2008-06';
ExecProc;
end;
//현재 성공하는 방법
with ADOStoredProc1 do
begin
Connection := ADOConnection1;
close;
ProcedureName := 'spDStatQuery;1';
Parameters.Clear;
Parameters.CreateParameter('UserID2',ftString,pdInput,20,'test');
Parameters.CreateParameter('QDate',ftString,pdInput,10,'2008-06');
ExecProc;
end;
=끝=
디자인 타임에 파라미터를 생성해 놓으시고, ParamByName 으로 그냥 값을 참조 하시거나 대입 하시면 됩니다.
위의 질문에는 AdoStroredProc 컴포넌트를 사용하실 스토어드 프로시져의 갯수만큼 디자인타임에 넣고 사용하시는것이 가장 편리한 방법입니다.
말씀드렸다시피 디자인 타임에서 파라미터를 미리 생성시켜 놓고 사용하시면 되구요.
하나의 스토어드 프로시져 컴포넌트를 가지고 상황마다 바뀌게 하려면, 위에서 사용하신 Clear후 CreateParameter를 사용하셔야 합니다.