真他妈的奇怪, 这个存储过程居然不能得到返回参数, 帮帮我(65分)

葬月

Unregistered / Unconfirmed
GUEST, unregistred user!
Delphi5.0 + ADO + SQLServer2000
三层的
存储过程如下:
CREATE PROCEDURE IsTaxiPOSRight
@TaxiNum char(50),
@TaxiSmallNum char(50),
@Pos char(50),
@PSAM char(50),
@Xianlu char(50),
@TaxiName char(50),
@Va int OUTPUT
AS
if exists ( select * from wx where 车辆牌照= @TaxiNum
and 内编号=@TaxiSmallNum
and POS机号=@Pos
and PSAM卡号=@PSAM
and 所属公司=@TaxiName
and 线路=@Xianlu )
begin

select @Va=1
end
else
begin
select @Va=0
end
GO
很简单的, 只是看看是否有这么条记录, 有的话VA=1 没有的话 VA=0
在SQLServer2000里,
declare @Va int
execute IsTaxiPOSRight 'AE0011','011','0011','11300011','770','强生公交', @Va output
print @Va
调用成功, 返回的是1 ,
在服务端用Wx_ADOStoredProc连接
在客户端用ClientDataSet调用, 将上面的数据作为参数
self.St_ClientDataSet.Params.Clear;
self.St_ClientDataSet.Params.CreateParam(ftString,'@TaxiNum',ptInput);
self.St_ClientDataSet.Params.ParamByName('@TaxiNum').AsString:=TaxiNum;
self.St_ClientDataSet.Params.CreateParam(ftString,'@TaxiSmallNum',ptInput);
self.St_ClientDataSet.Params.ParamByName('@TaxiSmallNum').AsString:=TaxiSmallNum;
self.St_ClientDataSet.Params.CreateParam(ftString,'@Pos',ptInput);
self.St_ClientDataSet.Params.ParamByName('@Pos').AsString:=Pos;
self.St_ClientDataSet.Params.CreateParam(ftString,'@PSAM',ptInput);
self.St_ClientDataSet.Params.ParamByName('@PSAM').AsString:=Psam;
self.St_ClientDataSet.Params.CreateParam(ftString,'@Xianlu',ptInput);
self.St_ClientDataSet.Params.ParamByName('@Xianlu').AsString:=Xianlu;
self.St_ClientDataSet.Params.CreateParam(ftString,'@TaxiName',ptInput);
self.St_ClientDataSet.Params.ParamByName('@TaxiName').AsString:=TaxiName;
self.St_ClientDataSet.Params.CreateParam(ftInteger,'@Va',ptOutput);

self.St_ClientDataSet.Execute;
if self.St_ClientDataSet.Params.ParamByName('@Va').AsInteger = 1 then
Result:=True
else
begin
MessageBox( self.Handle ,PChar('后台数据库里 没有 '+ TaxiNum+','+POS+','+PSAM+','+TaxiSmallNum+','+Xianlu+','+TaxiName+' 这条原始记录存在'),PChar('提交发生错误'), MB_OK or MB_ICONSTOP);
Result:=False;
end;

self.St_ClientDataSet.Close;
但是VA始终是0
怎么回事???我哪里错了
 
用 sql server 带的事件探察器跟踪一下这个存储过程的执行情况,
看问题出在那里.我估计你在建立参数的时候没有设定 size 造成长度不够.
 
我不会用 用 sql server 带的事件探察器跟踪
 
sqlserver的存储过程好象是有点问题
 
顶部