如何从存储过程返回所有值?

Mic*_*ick 3 sql delphi stored-procedures

原谅我的天真,但我不熟悉将Delphi与数据库一起使用(对某些人来说可能看起来很奇怪).

我使用TADOConnection建立了与我的数据库(MSSQL)的连接.我正在使用TADOStoredProc访问我的存储过程.

我的存储过程返回2列,一列充满服务器名称,以及服务器上充满用户的第二列.它通常返回大约70条记录......而不是大量数据.

如何以编程方式枚举此存储过程?我能够在我的表单上删除一个DBGrid并将其附加到TDataSource(然后附加到我的ADOStoredProc),我可以验证数据是否正确检索.

理想情况下,我想枚举返回的数据并将其移动到TStringList中.

目前,我使用以下代码枚举ADOStoredProc,但它只返回'@RETURN_VALUE':

ADOStoredProc1.Open;
ADOStoredProc1.ExecProc;
ADOStoredProc1.Parameters.Refresh;

for i := 0 to AdoStoredProc1.Parameters.Count - 1 do
begin
  Memo1.Lines.Add(AdoStoredProc1.Parameters.Items[i].Name);
  Memo1.Lines.Add(AdoStoredProc1.Parameters.Items[i].Value);
end;
Run Code Online (Sandbox Code Playgroud)

Dar*_*ler 8

调用Open以获取返回的数据集

StoredProc.Open;
while not StoredProc.EOF do
begin
  Memo1.Lines.Add(StoredProc.FieldByName('xyz').Value);
  StoredProc.Next;
end;
Run Code Online (Sandbox Code Playgroud)

  • 为清楚起见,我明确选择了这条路线.但在帖子中,他指的是两列和70行,所以即使你这样做也不是很大的开销.但是,我从不使用在设计时定义的字段或按照您的建议创建字段对象.如果要最小化开销,可以按顺序位置引用字段,这是我对定义字段的偏好. (2认同)