微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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;

原文地址:https://www.jb51.cc/delphi/101839.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐