Class | DBI::BaseStatement |
In: |
lib/dbi/base_classes/statement.rb
|
Parent: | Base |
StatementHandles are used to encapsulate the process of managing a statement (DDL or DML) and its parameters, sending it to the database, and gathering any results from the execution of that statement.
As with the other `Base` classes, the terms "DBD Required" and "DBD Optional" are defined in DBI::BaseDatabase.
raise_error | [RW] |
Get statement attributes.
# File lib/dbi/base_classes/statement.rb, line 159 def [](attr) @attr ||= { } @attr[attr] end
Set statement attributes. DBD Optional.
# File lib/dbi/base_classes/statement.rb, line 167 def []=(attr, value) raise NotSupportedError end
Bind a parameter to the statement. DBD Required.
The parameter number is numeric and indexes starting at 1. This corresponds to the question marks (?) in the statement from the left-most part of the statement moving forward.
The value may be any ruby type. How these are handled is DBD-dependent, but the vast majority of DBDs will convert these to string inside the query.
# File lib/dbi/base_classes/statement.rb, line 29 def bind_param(param, value, attribs) raise NotImplementedError end
Take a list of bind variables and bind them successively using bind_param.
# File lib/dbi/base_classes/statement.rb, line 74 def bind_params(*bindvars) bindvars.each_with_index {|val,i| bind_param(i+1, val, nil) } self end
Cancel any result cursors. DBD Optional, but intentionally does not raise any exception as it‘s used internally to maintain consistency.
# File lib/dbi/base_classes/statement.rb, line 83 def cancel end
returns result-set column information as array of hashs, where each hash represents one column. See BaseDatabase#columns. DBD Required.
# File lib/dbi/base_classes/statement.rb, line 63 def column_info raise NotImplementedError end
Execute the statement with the known binds. DBD Required.
# File lib/dbi/base_classes/statement.rb, line 36 def execute raise NotImplementedError end
fetch_scroll is provided with a direction and offset and works similar to how seek() is used on files.
The constants available for direction are as follows:
Other constants can be used, but if this method is not supplied by the driver, they will result in a raise of DBI::NotSupportedError.
# File lib/dbi/base_classes/statement.rb, line 100 def fetch_scroll(direction, offset) case direction when SQL_FETCH_NEXT return fetch when SQL_FETCH_LAST last_row = nil while (row=fetch) != nil last_row = row end return last_row when SQL_FETCH_RELATIVE raise NotSupportedError if offset <= 0 row = nil offset.times { row = fetch; break if row.nil? } return row else raise NotSupportedError end end