Q&A

  • stored procedure 에 파라메터 전달하기
우선 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 넘기는 것부터 뭐가 잘못되었는지좀 봐주세요~
2  COMMENTS
  • Profile
    KDDG_Hoya 2003.01.11 04:07
    님의 소스..
    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
  • Profile
    호롱불 2003.01.21 21:08
    어떤 특정 결과 값을 리턴받지 않으려면 간단하게
    TQuery를 이용해서 할 수 있습니다..

    TQuery 객체의 SQL 속성을 이용합니다.

    qrySet.Close;
    qrySet.SQL.Add(' Exec SP_Test ') ;
    qrySet.SQL.Add('''2''');
    qrySet.SQL.Add(',''' + FlatEdit1.Text + '''');
    qrySet.SQL.Add(',''' + FlatEdit2.Text + '''');
    qrySet.ExecSQL;  


    결과셋을..얻어 오려면..프로시저안에서 출력 커서를 이용하는
    방법도 있구여..
    그냥..Select 문을 수행한 후

    qrySet.Open 이라는..메소를 호출하면..결과셋이 넘어 옵니다.

    ..즐코 하세요.. ㅎㅎㅎ