2012-10-01 21 views

回答

2

从杰里米 - 埃文斯在续集通话谷歌小组的反应是:

不幸的是,续集的存储过程的支持是相当有限的。我不相信它支持返回码或输入/输出变量。它的设计与预先准备的语句支持类似,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