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. >