Ruby-odbc and OUTPUT params not working


#1

connecting to an SQLExpress database to run a stored procedure, and
output parameters are not working. If anyone has any help they can
give, it would be greatly appreciated.

require ‘rubygems’
require ‘odbc’

CREATE PROCEDURE dbo.up_TestSP4(@NotUsed INT, @ReturnVar INT OUTPUT)

AS

SET @ReturnVar = 666

/*

DECLARE @P2 INT

EXEC dbo.up_TestSP4 10, @P2 OUTPUT

SELECT @P2

*/

Error:

2000 (8162) [FreeTDS][SQL Server]The formal parameter “@P2” was not

declared as an OUTPUT parameter, but the actual parameter passed in

requested output.

odbc_test.rb:26:in `execute’

begin
conn = ODBC::Database.connect(“dsn”, “xxx”, “xxx”)
stmt = conn.prepare(“exec dbo.up_TestSP4 ?, ?”)
stmt.param_iotype(1, ODBC::SQL_PARAM_OUTPUT)
stmt.param_output_type(1, ODBC::SQL_INTEGER)
stmt.param_output_size(1, 4)
res = stmt.execute(1, nil)
out_value = stmt.param_output_value(1)
puts “#{out_value}”
rescue Exception => e
puts e
puts e.backtrace.join("\n")
ensure
stmt.cancel if stmt
conn.disconnect if conn && conn.connected?
end