우선 storedproc1 컨트롤에 database name과 stored procedure 을 설정 해주고
params에 stored procedure의 인수만큼 같은 타입으로 추가를 해주었습니다
그리고 소스에
updt_ty := '2';
StoredProc1.Params[0].AsString := updt_ty;
StoredProc1.Params[1].AsString := FlatEdit1.text;
StoredProc1.Params[2].AsString := FlatEdit2.text;
StoredProc1.execproc;
이렇게 코딩을 해주고 돌리면
음... 프로시저가 실행되게 해 놓았는데 실행이 안되네요 에러가 뜨는건 아닌데
또 질문이 있는데요
지금 stored procedure에 return 값이 있는데 이걸 받으려면 어떻게 해아하나요?
우선 procedure 실행할때 parameter 넘기는 것부터 뭐가 잘못되었는지좀 봐주세요~
updt_ty := '2';
StoredProc1.Params[0].AsString := updt_ty;
StoredProc1.Params[1].AsString := FlatEdit1.text;
StoredProc1.Params[2].AsString := FlatEdit2.text;
StoredProc1.execproc;
sp가 입력인지, 조회인지 잘 모르겠지만요..
저같은 경우 이렇게 코딩을 이렇게 합니다.
까다롭게 미리 설정하지 않고여..ㅡㅡ;
실행할때.. 연결하죠..ㅋㅋㅋ
글구 sp 컴포 하나 갔다가 다른 sp들 이용하죠(단, 실행만 할 경우에만).
with dm001.SP001 do begin
unprepare;
params.clear;
storedprocname := 'sp소유자.sp이름';
params.CreateParam(ftboolean, '@info', ptinput).value := info;
params.CreateParam(ftinteger, '@sid', ptoutput);
prepare;
execproc;
//open <-- 조회일 경우
******************** 두번째 답이군여..^^
result := parambyname('@sid').asinteger; <- output로 선언된 값을 받는거죠.. 이렇게 함..
********************
end;
sp 원문..
CREATE PROCEDURE [소유자].[sp이름]
@info bit,
@sid int output
AS
select @sid = s_id, @sname = s_memo from script
where s_call = @info
return
GO