Which database ?. This is for MySQL. Note user must have the correct permissions to create functions. The function is simply a demo, obviously you don't need a function to concat something to a field.
#!perl
use strict;
use warnings;
use DBI;
use Data::Dump 'pp';
my $dbh = get_dbh();
my $proc = "
CREATE FUNCTION my_subrt(s CHAR(30))
RETURNS CHAR(50)
RETURN CONCAT(s,'####');
";
$dbh->do('DROP FUNCTION IF EXISTS my_subrt');
$dbh->do($proc);
#$dbh->do('DELETE FROM TABLE2');
my $sql = '
INSERT INTO TABLE2 (COLUMN1, COLUMN2, COLUMN3)
SELECT COLUMN1, COLUMN2, my_subrt(COLUMN3)
FROM TABLE1
WHERE COLUMN4=?';
my $rv = $dbh->do($sql, {}, 'foo');
my $ar = $dbh->selectall_arrayref('SELECT * FROM TABLE2');
pp $ar;
$dbh->do('DROP FUNCTION my_subrt');
sub get_dbh{
my $database = "test"; my $user = ""; my $pw = "";
my $dsn = "dbi:mysql:$database:localhost:3306";
my $dbh = DBI->connect($dsn, $user, $pw, {
RaiseError=>1, AutoCommit=>1 } );
return $dbh;
}
poj