Hi,
I''ve been looking around and I just can''t seem to find too
much
documentation on ruby9i. The only thing that I found gives a very
high-level explanation of how to use bind variables when talking to an
oracle 9i database. Here is how they explain the bind_param method:
-----------------BEGIN QUOTE-------
Synopsis
statementObj.bind_param(label, bindvar)
Description
#bind_param binds bindvar to the parameter named label.
Bind variables are used for input of parameters in a DML statement or
for either input and output of parameters in a call to a stored
procedure or function.
---------------------END QUOTE--------------
Ok, so that seems pretty straight forward right? Well here is my code:
---------------------BEGIN MY CODE--------------
stmt = dbh.prepare("select value from v$segment_statistics
where statistic_name = :stat_name
and object_name = :t_name
and tablspace_name = :ts_name;")
table_name = "SOME_TABLE"
tablespace_name = "SOME_TABLESPACE"
stmt.bind_param("stat_name", "db block changes")
stmt.bind_pram("t_name", "#{table_name}")
stmt.bind_param("ts_name", "#{tablespace_name}")
stmt.execute
-------------------------END MY CODE-----------------
However, when I run this code snippet, I get an error saying that that
''bind_param'' could not bind the varialbe in
"stmt_bind_param". Here
is an a copy of the error:
----------------BEGIN ERROR-----------------
in `bind_param'': Could not bind variable in "stmt_bind_param"
in file
"statement.c" at line 108 (Ruby9i::Error)
ORA-01036: illegal variable name/number
----------------END ERROR------------------
Anyone run into anything like this that would be able to point me in
the right direction?
Thanks in advance.
-Carlos
By the way, this is failing as soon as it tries to bind the first param. On 10/8/05, Carlos Diaz <crdiaz324@gmail.com> wrote:> Hi, > > I''ve been looking around and I just can''t seem to find too much > documentation on ruby9i. The only thing that I found gives a very > high-level explanation of how to use bind variables when talking to an > oracle 9i database. Here is how they explain the bind_param method: > > -----------------BEGIN QUOTE------- > Synopsis > > statementObj.bind_param(label, bindvar) > Description > > #bind_param binds bindvar to the parameter named label. > > Bind variables are used for input of parameters in a DML statement or > for either input and output of parameters in a call to a stored > procedure or function. > > ---------------------END QUOTE-------------- > > Ok, so that seems pretty straight forward right? Well here is my code: > > ---------------------BEGIN MY CODE-------------- > > stmt = dbh.prepare("select value from v$segment_statistics > where statistic_name = :stat_name > and object_name = :t_name > and tablspace_name = :ts_name;") > > table_name = "SOME_TABLE" > tablespace_name = "SOME_TABLESPACE" > stmt.bind_param("stat_name", "db block changes") > stmt.bind_pram("t_name", "#{table_name}") > stmt.bind_param("ts_name", "#{tablespace_name}") > stmt.execute > -------------------------END MY CODE----------------- > > However, when I run this code snippet, I get an error saying that that > ''bind_param'' could not bind the varialbe in "stmt_bind_param". Here > is an a copy of the error: > > ----------------BEGIN ERROR----------------- > in `bind_param'': Could not bind variable in "stmt_bind_param" in file > "statement.c" at line 108 (Ruby9i::Error) > ORA-01036: illegal variable name/number > ----------------END ERROR------------------ > > Anyone run into anything like this that would be able to point me in > the right direction? > > Thanks in advance. > -Carlos >
Carlos Diaz wrote:> > stmt = dbh.prepare("select value from v$segment_statistics > where statistic_name = :stat_name > and object_name = :t_name > and tablspace_name = :ts_name;") > > table_name = "SOME_TABLE" > tablespace_name = "SOME_TABLESPACE" > stmt.bind_param("stat_name", "db block changes") > stmt.bind_pram("t_name", "#{table_name}") > stmt.bind_param("ts_name", "#{tablespace_name}") > stmt.executeYou need to include the ":" in your named params in the call to bind_param, e.g.: stmt.bind_param(":stat_name", "db block changes") Chris.
Ok, I feel like an idiot. I just found my error. There is no problem with the bind_param method. The problem I was running into is that I had a for loop where I was using another instance of the variable stmt, which happens to be the same name as I was using in the for the stmt I was trying to bind my variable to. So, to make a long story short, I was trying to bind a parameter to the wrong statement. On 10/8/05, Carlos Diaz <crdiaz324@gmail.com> wrote:> By the way, this is failing as soon as it tries to bind the first param. > > On 10/8/05, Carlos Diaz <crdiaz324@gmail.com> wrote: > > Hi, > > > > I''ve been looking around and I just can''t seem to find too much > > documentation on ruby9i. The only thing that I found gives a very > > high-level explanation of how to use bind variables when talking to an > > oracle 9i database. Here is how they explain the bind_param method: > > > > -----------------BEGIN QUOTE------- > > Synopsis > > > > statementObj.bind_param(label, bindvar) > > Description > > > > #bind_param binds bindvar to the parameter named label. > > > > Bind variables are used for input of parameters in a DML statement or > > for either input and output of parameters in a call to a stored > > procedure or function. > > > > ---------------------END QUOTE-------------- > > > > Ok, so that seems pretty straight forward right? Well here is my code: > > > > ---------------------BEGIN MY CODE-------------- > > > > stmt = dbh.prepare("select value from v$segment_statistics > > where statistic_name = :stat_name > > and object_name = :t_name > > and tablspace_name = :ts_name;") > > > > table_name = "SOME_TABLE" > > tablespace_name = "SOME_TABLESPACE" > > stmt.bind_param("stat_name", "db block changes") > > stmt.bind_pram("t_name", "#{table_name}") > > stmt.bind_param("ts_name", "#{tablespace_name}") > > stmt.execute > > -------------------------END MY CODE----------------- > > > > However, when I run this code snippet, I get an error saying that that > > ''bind_param'' could not bind the varialbe in "stmt_bind_param". Here > > is an a copy of the error: > > > > ----------------BEGIN ERROR----------------- > > in `bind_param'': Could not bind variable in "stmt_bind_param" in file > > "statement.c" at line 108 (Ruby9i::Error) > > ORA-01036: illegal variable name/number > > ----------------END ERROR------------------ > > > > Anyone run into anything like this that would be able to point me in > > the right direction? > > > > Thanks in advance. > > -Carlos > > > >