代码之家  ›  专栏  ›  技术社区  ›  neves

Delphi:如何获取存储过程的输出参数值?

  •  7
  • neves  · 技术社区  · 17 年前

    我想在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 围绕这个问题。

    1 回复  |  直到 17 年前
        1
  •  8
  •   jasonpenny    17 年前

    
    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;