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

前端之家收集整理的这篇文章主要介绍了database – Delphi:如何获取存储过程的输出参数的值?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在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.

解决方法

看起来如果你设置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;

猜你在找的Delphi相关文章