如何取出存储过程返回的结果集啊?(100分)

  • 主题发起人 ciscopower
  • 开始时间
C

ciscopower

Unregistered / Unconfirmed
GUEST, unregistred user!
遍了一个测试存储过程
...
select @cc=中心名 from 测试 where 编号=@number
GO
其中@cc 为output类型。
可是从DELPHI中一调用,
storpc1.Parameters.Parambyname('@number').Value:='ppp';
storpc1.Parameters.Parambyname('@cc').Value:='ppp';
storpc1.Open;
while not storpc1.eof do
begin
Memo1.Lines.Add(VarToStr(storpc1.Parameters.parambyname('@cc').Value));
storpc1.next;
end;

结果一运行,报:storpc1 commandtext does noet return a result rest.
郁闷ing......
 
语句错误返回了一个空集吧。
 
可是我在服务器上可以正常运行,并返回正确的值。
 
更奇怪的是:我用EXECPROC就可以正常执行,但是只能取出一个结果。如果用OPEN就报错。为什么啊!!!
 
传参即可
将StoreProc.Params[0] 设成
DataType ftInteger
ParamType ptInput
ValueType Byte
如:
try
with Storeproc1 do
begin
Params[1].Value := Edit1.Text;
Prepare;
Active := True;
end;
Finally
ShowMessage('数据处理完毕');
end;
 
参数前面为什么要“@”?
 
to bxqxb:
不行啊。返回
storpc1 commandtext does noet return a result rest。
但是我在SQL 2000里确实可以执行。
 
遍了一个测试存储过程
...
select @cc=中心名 from 测试 where 编号=@number
GO
其中@cc 为output类型。
可是从DELPHI中一调用,
storpc1.Parameters.Parambyname('@number').Value:='ppp';
storpc1.Parameters.Parambyname('@cc').Value:='ppp';
storpc1.Open;

1:mad:cc為Output類型,為何要用Open,而有ExecProc呢? 其次即然你定義的一個返回值當然你隻有引用這個返回字段
2:存儲過程返回值為兩種:返回參數與返回數據集
var s:string;
storpc1.Parameters.Parambyname('@number').Value:='ppp';
storpc1.ExecProc;
s:= storpc1.Parameters.Parambyname('@cc').AsString;

或者不要再定義@cc變量直接select 中心名 from 测试 where 编号=@number
从DELPHI中一调用,
storpc1.Parameters.Parambyname('@number').AsString:='ppp';
storpc1.Open;

 
我去试一下。不过。如果返回了5个值,那我如何从返回中取回这些值。
 
我想知道,如何在DELHPI里面用存储过程里取回一个结果集合????如取出表里的所以记录?
企盼中。。。
 
用一个tquery控件,再设置其sql语句就可以了:
如select * from 你的存储过程名"
 
[red]因为你这个存储过程不返回数据集,Next当然要报错,也就当然不能用Open[/red]
把存储过程的内容贴出来帮你up
 
顶部