Sequel(Ruby ORM)中的存储过程返回代码

Sequel(Ruby ORM)中的存储过程返回代码,ruby,sequel,Ruby,Sequel,在MS SQL Server中,存储过程可以返回一个称为a的整数值,以指示过程的执行状态 续集支持这个吗 从我的\u存储的\u proc.call返回的值与我在SQL中返回的整数不匹配。是否有其他方式访问此信息?Jeremy Evans对Sequel Talk Google Group的回应是: 不幸的是,Sequel对存储过程的支持相当有限。我认为它不支持返回码或输入/输出变量。它的设计类似于prepared语句支持,其中delete/update返回受影响的行数,select生成行数 如果S

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

续集支持这个吗


从我的\u存储的\u proc.call返回的值与我在SQL中返回的整数不匹配。是否有其他方式访问此信息?

Jeremy Evans对Sequel Talk Google Group的回应是:

不幸的是,Sequel对存储过程的支持相当有限。我认为它不支持返回码或输入/输出变量。它的设计类似于prepared语句支持,其中delete/update返回受影响的行数,select生成行数

如果Sequel的支持不能满足您的需要,请使用Databasesynchronize访问底层数据库连接,并使用连接的API直接对其进行操作,该API取决于所使用的驱动程序

描述如何从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

现在,Sequel版本使用call_mssql_proc方法支持这一点:

结果将在:result元素中

阅读更多

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

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