2

在 MS SQL Server 中,存储过程可以返回一个称为返回码的整数值,以指示过程的执行状态。

续集支持吗?

返回的值my_stored_proc.call()与我在 SQL 中返回的整数不匹配。还有其他方法可以访问它吗?

4

2 回答 2

3

现在使用以下方法从Sequel 的4.6版开始支持:call_mssql_proc

DB.call_mssql_sproc(:SequelTest, {:args => ['Input String', :output]})

> {:result => 0, :numrows => 1, :var1 => "1"}

结果将在:result元素中。

阅读“ MSSQL 中的存储过程”了解更多信息。

于 2014-01-03T11:55:58.817 回答
2

Jeremy Evans 在 Sequel Talk Google Group 上的回复是:

不幸的是,Sequel 对存储过程的支持相当有限。我不相信它支持返回码或输入/输出变量。它的设计类似于准备好的语句支持,其中删除/更新返回受影响的行数,而选择产生行。

如果 Sequel 的支持不能满足您的需求,请使用 Database#synchronize 获取底层数据库连接,并使用连接的 API(取决于使用的驱动程序)直接对其进行操作。

从 JDBC MSSQL 获取返回值”描述了如何从 Java 角度进行操作。

而且,这是 Ruby 实现的(工作)第一次尝试:

return_code = @db.synchronize do |conn|
  stmnt = conn.prepareCall('{ ? = call dbo.sp_sequel_test() }')
  stmnt.registerOutParameter(1, java::sql::Types::INTEGER)
  stmnt.execute
  # output parameters have not yet been processed, must call getMoreResults() first.
  stmnt.getMoreResults  
  stmnt.getInt(1)
end
于 2012-10-03T07:12:04.973 回答