如何使 TStoredProc,TQuery 能处理多结果集的问题?(急!!) (200分)

  • 主题发起人 主题发起人 fhli
  • 开始时间 开始时间
F

fhli

Unregistered / Unconfirmed
GUEST, unregistred user!
存储过程如下:
CREATE PROCEDURE testmult @function_id INT
AS
select progress =1
select progress = 30
select progress = 70
return 100
go
要求能取到 1, 30 ,70 等数据

 
将要取的数据作为存储过程的返回参数,用OUTPUT关键字.
CREATE PROCEDURE testmult @function_id INT,
@progress1 int output,
@progress2 int output,
@progress3 int output
AS
select @progress1 =1
select @progress2 = 30
select @progress3 = 70
return 100
go
 
CREATE PROCEDURE testmult
@function_id INT ,
@out1 int output,
@out2 int output,
@out3 int output,
AS
select @out1 =1
select @out2 = 30
select @out3 = 70
return 100

declare @rs1 int,@rs2 int,@rs3 int
exec fpb_web.testmult @rs1 output,@rs2 output, @rs3 output
select @rs1 ,@rs2, @rst3

没问题!
 
他们说的都不错,还有就是要注意用Tquery时注意取output值时小心。


sql:='declare @rs1 int,@rs2 int,@rs3 int'
+' exec fpb_web.testmult @rs1 output,@rs2 output, @rs3 output'
+' select @rs1 ,@rs2, @rst3'

query1.Close;
query1.SQL.Clear;
query1.SQL.Add(sql);
query1.Open;

result1 := query1.Field[0].Asinteger;
result2 := query1.Field[1].Asinteger;
...

千万注意要用Open instead of ExecSQL;
 
各位大虾:我不想用output: 因在实际应用中 select @progress2 = ? 是由
select * from Table_A
select * from Table_B 组成的 (Table_A,Table_B 结构相同)
我不想更改存储过程,而由TStroedproc 或TQuery ,TBDEDataset来
实现

 
sql:='declare @rs1 int,@rs2 int,@rs3 int'
+' exec fpb_web.testmult @rs1 output,@rs2 output, @rs3 output'
+' select @rs1 ,@rs2, @rst3'

query1.Close;
query1.SQL.Clear;
query1.SQL.Add(sql);
query1.Open;
这段代码能不能实现呀?我这怎么报错啊,说什么识别不到 @rs1
 
to: chenlh

绝对可以,注意不要忘了Output!

还有 fpb_web.testmult 应该为testmult ,笔误 ,呵呵
 
各位:
请原谅我问题提的不够清楚!
我的存储过程只是例子, 请不要更改她,而由Tstoredproc,tquery
或 DBI函数 或 (DBLIB函数 太繁了!)delphi4 其他函数来实现!!!
难道整个中国无人能 KP 这个难题??!!!
 
在 http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=312166 中
你说的“衷心感谢”是什么意思?改用delphi 5还是什么别的方法?
 
如果你的后台是SQL Server,请换ADOStoredProc
 
多人接受答案了。
 
后退
顶部