Thank you so much.
I was checking UDFs.

Now SQL::Statement has become my tool.
Thank you again.

Regards,
Hirosi Taguti
[EMAIL PROTECTED]
 
> >INSERT INTO MyTbl (col1,record_ts,col2) 
> >       VALUES (7,CURRENT TIMESTAMP,'o''brian') };
> >
> That calls for a combination of SQL::Statement and your 
> method. You have
> to trick SQL::Statement into thinking that "CURRENT TIMESTAMP" is a
> string (because it doesn't currently handle functions with spaces in
> their names. So the code below takes your input and returns:
> 
> INSERT INTO MYTBL
> (COL1,RECORD_TS,COL2)
> VALUES (?,CURRENT TIMESTAMP,?)
> 
> With [7 o'brian] as the values.
> 
> sub make_pholders {
> my($sql) = @_;
> $sql =~ s/(CURRENT TIMESTAMP)/'$1'/g;
> my $stmt = SQL::Statement->new( $sql );
> my($table) = map {$_->name} $stmt->tables;
> my($columns) = join ',',map {$_->name} $stmt->columns;
> my @values;
> my @pholders = map {
> if (/^CURRENT TIMESTAMP$/) {
> $_
> }
> else {
> push @values => $_;
> '?';
> }
> } $stmt->row_values;
> my $pholder = join ',',@pholders;
> my $pholder_sql =
> "INSERT INTO $table ($columns) VALUES ($pholder)"
> ;
> return $pholder_sql,@values;
> }
> 
> I hope this helps.
> 

Reply via email to