Alle Tuesday 30 September 2008, Alan Nicoll ha scritto:
> I'm a perlish person trying to get Ruby to talk to our Oracle 10g
> database.  The following program gives me a syntax error I can't
> resolve.  I've looked at a lot of the website messages concerning the
> same error an not found anything that points me to a solution.  The sql
> runs in TOAD.  The caret points to the underbar between aradmin and et.
>
> require 'oci8'
> conn = OCI8.new('sql_user', 'sql_user05', 'AR')
>  cursor = conn.exec('SELECT entry_id, status FROM aradmin.et_requests
> where entry_id > '007850'')
>  while r = cursor.fetch()
>    puts r.join(',')
>  end
>  cursor.close
>  conn.logoff
>
>
> ruby data2.rb
> data2.rb:3: syntax error, unexpected tINTEGER, expecting ')'
>  cursor = conn.exec('SELECT entry_id, status FROM aradmin.et_requests
> where entry_id > '007850'')
>                                                                            
>                ^
>
> >Exit code: 1

The single quote before the number closes the string opening at SELECT, so 
that ruby sees a string followed by a number, just like:

'abc'123

which isn't valid ruby syntax. To solve the issue, simply replace the single 
quotes around the argument to conn.exec with double quotes:

cursor = conn.exec("SELECT entry_id, status FROM aradmin.et_requests
where entry_id > '007850'").

I hope this helps

Stefano