Q&A

  • [긴급]스토어드 프로시저 사용법 가르쳐조요
안녕하세요

스토어드 프로시저를 사용해서 DB를 Insert, update, delete 하고 싶어서 사용했는데.

general Sql error 가 나오는군요..

우선 서버는 MSSQL 7.0 이고요..

delphi 5.0으로 작업을 했어요

서버와 연결은 TDATABASE 로 연결했구요

TstoredProc 로 TDATABASE와 연결 StoredProceName을 린크해서 사용했어요

TStoredProc의 구성은요



CREATE PROCEDURE [sp_insert_OdUser_1]

(@DbLogin_1 [varchar](10),

@DbPass_2 [varchar](10),

@CcName_3 [varchar](20),

@Permission_4 [char](1))



AS INSERT INTO [Sworder].[dbo].[OdUser]

( [DbLogin],

[DbPass],

[CcName],

[Permission])



VALUES

( @DbLogin_1,

@DbPass_2,

@CcName_3,

@Permission_4)

입니다.



Params 는

@DbLogin_1, @DbPass_2, @CcName_3, @Permission_4 의 paramType 를 ptInput 로 했어요...

파라메타는 전송이 되는데 ExecProc 사용시 general Sql error 가 나요...

소스는

procedure TF_User.SpeedButton4Click(Sender: TObject);

begin

DM.sp_user.Params[1].Asstring := 'ID';

DM.sp_user.Params[2].Asstring := 'pass';

DM.sp_user.Params[3].Asstring := 'name';

DM.sp_user.Params[4].Asstring := 'U';

DM.sp_user.Prepare;

DM.sp_user.ExecProc;

end;

입니다.

아시는 분 꼭 가르쳐 주시면 감사하겠습니다.

이거 정말 연결은 되는데 자꾸 에라가 나서 말이지요.. 꼭 부탁 드립니다.

2  COMMENTS
  • Profile
    박준영 2001.01.04 11:31
    안장근 wrote:

    > 안녕하세요

    > 스토어드 프로시저를 사용해서 DB를 Insert, update, delete 하고 싶어서 사용했는데.

    > general Sql error 가 나오는군요..

    > 우선 서버는 MSSQL 7.0 이고요..

    > delphi 5.0으로 작업을 했어요

    > 서버와 연결은 TDATABASE 로 연결했구요

    > TstoredProc 로 TDATABASE와 연결 StoredProceName을 린크해서 사용했어요

    > TStoredProc의 구성은요

    >

    > CREATE PROCEDURE [sp_insert_OdUser_1]

    > (@DbLogin_1 [varchar](10),

    > @DbPass_2 [varchar](10),

    > @CcName_3 [varchar](20),

    > @Permission_4 [char](1))

    >

    > AS INSERT INTO [Sworder].[dbo].[OdUser]

    > ( [DbLogin],

    > [DbPass],

    > [CcName],

    > [Permission])

    >

    > VALUES

    > ( @DbLogin_1,

    > @DbPass_2,

    > @CcName_3,

    > @Permission_4)

    > 입니다.

    >

    > Params 는

    > @DbLogin_1, @DbPass_2, @CcName_3, @Permission_4 의 paramType 를 ptInput 로 했어요...

    > 파라메타는 전송이 되는데 ExecProc 사용시 general Sql error 가 나요...

    > 소스는

    > procedure TF_User.SpeedButton4Click(Sender: TObject);

    > begin

    > DM.sp_user.Params[1].Asstring := 'ID';

    > DM.sp_user.Params[2].Asstring := 'pass';

    > DM.sp_user.Params[3].Asstring := 'name';

    > DM.sp_user.Params[4].Asstring := 'U';

    > DM.sp_user.Prepare;

    > DM.sp_user.ExecProc;

    > end;

    > 입니다.

    > 아시는 분 꼭 가르쳐 주시면 감사하겠습니다.

    > 이거 정말 연결은 되는데 자꾸 에라가 나서 말이지요.. 꼭 부탁 드립니다.

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



    ADO를 사용한 Storedprocedure 예제입니다.

    도움이 되시길....





    with ADOStoredProc1 do

    begin

    Close;

    Parameters.Clear;



    ProcedureName := 'xxx_test';

    Parameters.CreateParameter('RET',ftInteger,pdReturnValue, 0, 0);

    Parameters.CreateParameter('No',ftString,pdInput, 11, No);

    Parameters.CreateParameter('WD',ftString,pdInput, 8, 'temp');

    Parameters.CreateParameter('Gb',ftInteger,pdInput, 0, FlatTabControl1.ActiveTab);



    Open;

    ret := Parameters.ParamValues['RET'];

    Parameters.Clear;





    case ret of

    1 :

    begin

    PosGrid.ColCount := FieldCount;

    if RecordCount = 0 then

    begin

    Close;

    exit;

    end;

    PosGrid.RowCount := RecordCount + 1;

    i := 1;

    while not EOF do

    begin

    PosGrid.Cells[0,i] := FieldValues['BBB'];

    if FieldValues['OrderGb'] = 1 then

    PosGrid.Cells[1,i] := 'A'

    else PosGrid.Cells[1,i] := 'B';



    PosGrid.Cells[2,i] := FormatFloat('###,###,###',FieldValues['C']);

    PosGrid.Cells[3,i] := FormatFloat('#,###.00',FieldValues['D']);

    PosGrid.Cells[4,i] := FormatFloat('###,###,###,###',FieldValues['E']);



    inc(i);

    Next;

    end;

    end;

    else

    begin

    showmessage (FieldValues['Msg']);

    end;

    end;

    Close;

    end;





  • Profile
    안장근 2001.01.05 01:33
    박준영시 정말 감사합니다.

    그런데 말이지요 꼭 ADO 를 쓰지 않고 바로 스토어즈 프로시저를 쓰는 방법은 없는지요...

    TDATABASE 에 바로 스토어즈 프로시저를 연결해서. 서버의 스토어즈 프로시저를 실행하는 방법은 없는지요...

    그것을 알고 싶어요..

    감사합니다.



    박준영 wrote:

    >

    > ADO를 사용한 Storedprocedure 예제입니다.

    > 도움이 되시길....

    >

    >

    > with ADOStoredProc1 do

    > begin

    > Close;

    > Parameters.Clear;

    >

    > ProcedureName := 'xxx_test';

    > Parameters.CreateParameter('RET',ftInteger,pdReturnValue, 0, 0);

    > Parameters.CreateParameter('No',ftString,pdInput, 11, No);

    > Parameters.CreateParameter('WD',ftString,pdInput, 8, 'temp');

    > Parameters.CreateParameter('Gb',ftInteger,pdInput, 0, FlatTabControl1.ActiveTab);

    >

    > Open;

    > ret := Parameters.ParamValues['RET'];

    > Parameters.Clear;

    >

    >

    > case ret of

    > 1 :

    > begin

    > PosGrid.ColCount := FieldCount;

    > if RecordCount = 0 then

    > begin

    > Close;

    > exit;

    > end;

    > PosGrid.RowCount := RecordCount + 1;

    > i := 1;

    > while not EOF do

    > begin

    > PosGrid.Cells[0,i] := FieldValues['BBB'];

    > if FieldValues['OrderGb'] = 1 then

    > PosGrid.Cells[1,i] := 'A'

    > else PosGrid.Cells[1,i] := 'B';

    >

    > PosGrid.Cells[2,i] := FormatFloat('###,###,###',FieldValues['C']);

    > PosGrid.Cells[3,i] := FormatFloat('#,###.00',FieldValues['D']);

    > PosGrid.Cells[4,i] := FormatFloat('###,###,###,###',FieldValues['E']);

    >

    > inc(i);

    > Next;

    > end;

    > end;

    > else

    > begin

    > showmessage (FieldValues['Msg']);

    > end;

    > end;

    > Close;

    > end;

    >

    >