在MS SQL Server的存储过程可以返回一个整数值称为return code以指示程序的执行状态。存储过程返回码(红宝石ORM)
继续支持吗?从my_stored_proc.call()
返回
值不匹配,我在SQL返回整数。有没有其他方式可以访问它?
在MS SQL Server的存储过程可以返回一个整数值称为return code以指示程序的执行状态。存储过程返回码(红宝石ORM)
继续支持吗?从my_stored_proc.call()
返回
值不匹配,我在SQL返回整数。有没有其他方式可以访问它?
从杰里米 - 埃文斯在续集通话谷歌小组的反应是:
不幸的是,续集的存储过程的支持是相当有限的。我不相信它支持返回码或输入/输出变量。它的设计与预先准备的语句支持类似,delete/update返回受影响的行数,并选择yield行。
如果续集的支持不能满足您的需求,使用数据库#同步到底层的数据库连接,并直接对使用连接的API(这取决于所使用的驱动程序)进行操作。
“Getting the Return Value from JDBC MSSQL”描述了如何从Java的角度来做到这一点。
而且,这里是一个Ruby实现一个(工作)第一个尝试:
DB.call_mssql_sproc(:SequelTest, {:args => ['Input String', :output]})
> {:result => 0, :numrows => 1, :var1 => "1"}
结果会:
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
这是从续集4.6版本使用call_mssql_proc
方法现在支持在:result
元素中。
读 “Stored Procedures in MSSQL” 为多。