谁用过dbExpress里的TSQLStoredProc? (300分)

G

gxcooo

Unregistered / Unconfirmed
GUEST, unregistred user!
我在D7里用TSQLStoredProc调用MS SQL 2000里的存储过程出错[:(]
存储过程是:

select @ErrCode=0
if exists(select* from book
where bookid=@bookid and isfree=1)
begin
update book set isfree=0 where bookid=@bookid
insert borrow (bookid,userid,borrowdate) values (@bookid,@userid,GETDATE());
end
else
begin
select @ErrCode=1
end
return @ErrCode
GO
在D7里的调用代码为:
with doborrowSQLStoredProc do
begin
StoredProcName:='doborrow';
Params.Clear;
P1 := TParam.Create(Params, ptInput);
P2 := TParam.Create(Params, ptInput);
try
Params[0].Name := '@userid';
Params[1].Name := '@bookid';
ParamByName('@userid').AsString :=Edit1.Text;
ParamByName('@bookid').AsString :=Edit2.Text;
ExecProc;
finally
P1.Free;
P2.Free;
end;
end;

出错提示见附图: http://kuga.51.net/temp/12.jpg
 
也许dbExpress还没有长大,换用ADO吧。幸好Borland把 dbExpress做的和ADO几乎一模一样,
转换过来很容易
 
是不是你的p1,p2错了,不是语句错吧,
Params.Clear;
// P1 := TParam.Create(Params, ptInput);
// P2 := TParam.Create(Params, ptInput);
parameters.createparameter('@errcode',ptinpiut,..
 
to ugvanxk:
没错啊,按帮助上写的
 
我也出现在过。不过我解决了!碰到我了,你爽了。准备送分吧。
下面这一段希望你能明白些什么?
SchemaName:='dbo';
StoredProcName:='UpdateDataDay';
Params.Clear;
Params.CreateParam(ftInteger, 'RETURN_VALUE', ptOutput );
Params.CreateParam(ftString, '@CurDAY', ptInput);
Params.CreateParam(ftString, '@PreDAY', ptInput);
Params.CreateParam(ftInteger, '@ErrorCode', ptOutput );
Params.ParamByName('@CurDAY').AsString:=DateToStr(iRq);
Params.ParamByName('@PreDAY').AsString:=DateToStr(aPreRq);
Params.ParamByName('@ErrorCode').AsInteger:=ErrorCode;
Params.ParamByName('RETURN_VALUE').AsInteger:=ErrorCode;
ExecProc;
不明白的再问我,想快的话用邮件。miker_fan@163.net.
 
多人接受答案了。
 
顶部