在 Delphi 中,我使用以下语句
with data_frm.output_sp do
begin
if active = True then close;
StoredProcName:='enterprise_car_line_query_test;1';
try
prepare;
parambyname('@inp').AsString:= '1000100122';
outp0:=params.parambyname('@outp0').AsString;
outp1:=params.parambyname('@outp1').asinteger;
outp2:=params.parambyname('@outp2').asinteger;
ExecProc;
unprepare;
except
on E: EdatabaseError do
showmessage(E.message + #13 +'数据处理失败');
end;
end;
系统返回提示:
General SQL error
[Microsoft][ODBC SQL Server Driver] Indicator Variable
required but not supplied
存储过程如下:
create procedure enterprise_car_line_query1
(
@inp char(10),
@outp0 varchar(10) output,
@outp1 int output,
@outp2 int output
)
as
select distinct @outp0= 姓名 from 联系人 where 编码=@inp and 人员类型='1002'
create table #temp_tab_erc
(
车辆编号 char(10),
业户编码 char(10),
额定载量 real,
车辆等级 char(4)
)
insert #temp_tab_erc select tc.车辆号码, c.业户编码, c.额定载量, tc.车辆等级
from transfer_cert as tc, car as c
where tc.车辆号码=c.车辆编号 and c.业户编码=@inp
select @outp1=count(车辆编号), @outp2=sum(额定载量) from #temp_tab_erc
where 额定载量 > 30
go
在 SQL Server 的 Query 中,用以下语句可执行成功。
declare @o varchar(10),@o1 int, @o2 int
select @o='', @o1 = 0 ,@o2 =0
exec enterprise_car_line_query1 '1000100175', @o output,@o1 output, @o2 output
select @o, @o1 ,@o2
go
在 Delphi 中执行不成功是否因为在参数中没有传递 output 的信息。
如何解决。是否要在 data_frm.output_sp 的 params 编辑栏中,把 params type 设置
为 ptoutput.但我试过也不行。