I'm trying to execute a mssql store_procedure that inserts date into the 
database using DB.run. For some of the parameters i want to pass in values 
stored in variables. I'd done a similar thing with a DB.fetch, but i get an 
error when trying to use the same concept in DB.run

The working DB.fetch method 
    def get_rec_types(catalog_id)
      array = Array.new
      $DB.fetch("exec Get_Recommendation_Types @catalog_id = :catalog", 
:catalog => catalog_id) do  |n|
        array << n[:name]
      end
      array
    end

But when i run 

DB.run("exec Clickstream_Insert_Data @Application_ID = 'resonancerecords01',
                             @Tracking_ID = :tracking_id,
                             @Session_ID = :session_id,
                             @Page_ID = :page_id,
                             @Page_URL = '',
                             @Referrer_URL = '',
                             @Event = 'Product',
                             @Event_Items = '<ROOT><ei i=''B000000993'' 
/><ei i=''B00000099Y'' /><ei i=''B00005B36H'' /><ei i=''B000002GJS'' 
/></ROOT>',
                             @Customer_ID = '360741930054024',
                             @Transaction_ID = NULL,
                             @Timestamp = '2013-01-08 10:05:57.293'", 
:tracking_id => @tracking_id, :session_id => @session_id, :page_id => 
@page_id)

I get the error

C:/Ruby192/lib/ruby/gems/1.9.1/gems/sequel-3.42.0/lib/sequel/adapters/ado.rb:93:in
 
`method_missing': WIN32OLERuntimeError: (in OLE method `Execute': ) 
(Sequel::DatabaseError)
    OLE error code:80040E14 in Microsoft OLE DB Provider for ODBC Drivers
      [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near 
':'.
    HRESULT error code:0x80020009
      Exception occurred.
from 
C:/Ruby192/lib/ruby/gems/1.9.1/gems/sequel-3.42.0/lib/sequel/adapters/ado.rb:93:in
 
`block (2 levels) in execute'
from 
C:/Ruby192/lib/ruby/gems/1.9.1/gems/sequel-3.42.0/lib/sequel/database/logging.rb:33:in
 
`log_yield'
from 
C:/Ruby192/lib/ruby/gems/1.9.1/gems/sequel-3.42.0/lib/sequel/adapters/ado.rb:93:in
 
`block in execute'
from 
C:/Ruby192/lib/ruby/gems/1.9.1/gems/sequel-3.42.0/lib/sequel/database/connecting.rb:236:in
 
`block in synchronize'
from 
C:/Ruby192/lib/ruby/gems/1.9.1/gems/sequel-3.42.0/lib/sequel/connection_pool/threaded.rb:104:in
 
`hold'
from 
C:/Ruby192/lib/ruby/gems/1.9.1/gems/sequel-3.42.0/lib/sequel/database/connecting.rb:236:in
 
`synchronize'
from 
C:/Ruby192/lib/ruby/gems/1.9.1/gems/sequel-3.42.0/lib/sequel/adapters/ado.rb:91:in
 
`execute'
from 
C:/Ruby192/lib/ruby/gems/1.9.1/gems/sequel-3.42.0/lib/sequel/adapters/ado.rb:66:in
 
`execute_ddl'
from 
C:/Ruby192/lib/ruby/gems/1.9.1/gems/sequel-3.42.0/lib/sequel/database/query.rb:135:in
 
`run'
from C:/RM_Filter_tests/rm_filter_test.rb:41:in `get_rec_types'
from C:/RM_Filter_tests/rm_filter_test.rb:47:in `<top (required)>'
from -e:1:in `load'
from -e:1:in `<main>'


So how do i pass in the variables? 

-- 
You received this message because you are subscribed to the Google Groups 
"sequel-talk" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/sequel-talk/-/oXtcHnjaCZgJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sequel-talk?hl=en.

Reply via email to