【问题标题】:Delphi: How to get the value of an output parameter of a stored procedure?Delphi:如何获取存储过程的输出参数的值?
【发布时间】:2009-08-06 23:54:42
【问题描述】:

我想在 Delphi 中以编程方式创建一个 SQLDataSet 并使用它来执行存储过程并获取输出参数的值。看起来很简单,但我做不到。

这是 SQL Server 中的一个愚蠢的存储过程:

CREATE PROCEDURE [dbo].getValue  @x INT OUTPUT
AS
BEGIN
  SET @x = 10;
END

现在这是我尝试过但没有奏效的变体之一:

proc := TSQLDataSet.Create(nil);
proc.SQLConnection := DefaultConnection;
proc.CommandText := 'getValue';
proc.Params.CreateParam(ftInteger, '@x', ptOutput);
proc.Params.ParamByName('@x').Value := 0;
proc.ExecSQL(False);
value := newIdProc.Params.ParamByName('@x').AsInteger;

我认为这很容易,但有一些 registred bugs 围绕这个问题。

【问题讨论】:

    标签: database delphi stored-procedures


    【解决方案1】:

    如果您设置了 CommandType 和 SchemaName 并且不创建 Param,看起来它可以工作:

    
    proc := TSQLDataSet.Create(nil);
    proc.SQLConnection := DefaultConnection;
    
    proc.CommandType := ctStoredProc;
    proc.SchemaName  := 'dbo';
    proc.CommandText := 'getValue';
    
    proc.ExecSQL(False);
    
    value := proc.Params.ParamByName('@x').AsInteger;
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-23
      • 1970-01-01
      • 2017-02-21
      • 2016-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多