I think he's trying to use it as a PL/SQL variable -- not
a table name.  As in this block of PL/SQL code in the 
DBD::Oracle docs:

      FUNCTION func_np
        RETURN VARCHAR2
      IS
        ret_val VARCHAR2(20);
      BEGIN
        SELECT USER INTO ret_val FROM DUAL;
        RETURN ret_val;
      END;

In this case the PL/SQL code is selecting from a table into
a variable.

The stuff below looks like an attempt to create on the fly
PL/SQL.  I've never seen that done.  

> -----Original Message-----
> From: Bart Lateur [mailto:[EMAIL PROTECTED]]
> Sent: Wednesday, May 23, 2001 10:13 AM
> To: [EMAIL PROTECTED]
> Subject: Re: AW: (not) Too stupid to bind a variable... :-)
> 
> 
> On Wed, 23 May 2001 16:02:00 +0200, [EMAIL PROTECTED] wrote:
> 
> >What I wanted is:
> >
> >  my $sth = $dbh->prepare(q{
> >    BEGIN select vtr_id into :1 from t_vertraege
> >      where vtr_nr='$vbb_ver_nr'; 
> >    END;
> >  });
> 
> You may turn this around as much as you like, but you're 
> still trying to
> do something for which placeholders were never intended. You 
> want to use
> a placeholder for a table name. Placeholders were only intended to
> reference field (=column) values. Don't be surprised if anything else
> doesn't work: no field names, no table names. That's not what 
> it's for.
> Only field values.
> 
> -- 
>       Bart.
> 

Reply via email to