# DBI stateHandler bind\_param errors

**URL:** <https://www.ruby-forum.com/t/dbi-statehandler-bind-param-errors/116829>\
**Category:** Ruby\
**Created:** [October 10, 2007, 3:39am UTC](https://www.ruby-forum.com/t/dbi-statehandler-bind-param-errors/116829 "2007-10-10T03:39:39Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![drlelon](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/ee59a6/32.png) [@drlelon](https://www.ruby-forum.com/u/drlelon)\
**Post date:** [October 10, 2007, 3:39am UTC](https://www.ruby-forum.com/t/dbi-statehandler-bind-param-errors/116829/1 "2007-10-10T03:39:39Z")

</div>

I have a real problem with calling a stored procedure on MS SQL Server  
from Ruby-DBI. I have no problems with connections or calling queries.  
I can even call the Stored procedure with “exec Test ‘test’” and the  
stored procedure inserts the value text into a Test table. However, if  
I try to use the bind\_param to add the input params to a stored  
procedure to make my class alitte more friendly it ERRORs.

OUTPUT \_\_\_\_  
Connection Successful !!!  
Preparing SQL Query: exec Test  
Executing SQL Stmt  
Error INTERN (0) [RubyODBC]Too much parameters

* * *

CODE \_\_\_\_\_\_\_\_\_\_\_\_

```
begin
  connection_string = "DBI:ODBC:Driver={SQL

```

Server};Server=#{@adapter\_config[“acct\_db\_host”]};Database=#{@adapter\_config[“acct\_db\_name”]};Uid=#{@adapter\_config[“acct\_db\_user”]};Pwd=#{@adapter\_config[“acct\_db\_pass”]}"  
connect( connection\_string, @adapter\_config[“acct\_db\_user”],  
@adapter\_config[“acct\_db\_pass”] )  
is\_connected  
prepare( “exec Test” )  
bind\_param( 1, “Admin1” )  
execute  
#puts "Return\_Code: " + get\_return\_code  
#puts "Return\_Status: " + get\_return\_status  
rescue DBI::DatabaseError =\> e  
puts “Error #{e.errstr}”  
rollback  
ensure  
#disconnect from server  
disconnect  
end  
end

def connect( connection\_string, db\_user, db\_pass )  
@db = DBI.connect( connection\_string )  
end

def disconnect  
@db.disconnect if @db  
end

def is\_connected  
if @db.ping  
puts “Connection Successful !!!”  
else  
puts “Connection FAILED !!!”  
end  
#@db.ping  
end

def execute  
puts “Executing SQL Stmt”  
@stmt.execute  
end

def prepare( query )  
puts "Preparing SQL Query: " + query  
@stmt = @db.prepare( query )  
end

# attribs is not yet used in this version, but could later be a hash

containing more

# information like parameter type, etc.

def bind\_param( param, value )  
@stmt.bind\_param( param, value, false )  
end
