加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 04:20:12 所属栏目:大数据 来源:网络整理
导读:我想在Delphi中以编程方式创建一个SQLDataSet,并使用它来执行存储过程并获取输出参数的值.看起来很简单,但我不能让它工作. 这是SQL Server中的一个哑存储过程: CREATE PROCEDURE [dbo].getValue @x INT OUTPUTASBEGIN SET @x = 10;END 现在,这是我尝试过但
我想在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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读