INSERT INTO test
VALUES ( ?,? )
RETURNING my_id INTO ?
####
CREATE TABLE "SPL"."TEST" (
"MY_ID" NUMBER NOT NULL ENABLE,
"MY_NAME" VARCHAR2(50) NOT NULL ENABLE,
"MY_DESC" VARCHAR2(100),
CONSTRAINT "TEST_PK" PRIMARY KEY ("MY_ID")
) ;
####
CREATE SEQUENCE "SPL"."TEST_ID_SEQ"
MINVALUE 1
MAXVALUE 999999999999999999999999999
INCREMENT BY 1
START WITH 1020
CACHE 20
NOORDER
NOCYCLE ;
####
CREATE OR REPLACE TRIGGER "SPL"."BFR_INS_TEST_TRG"
before insert on TEST
for each row
declare
cursor test_id_cur is
select test_id_seq.nextval
from dual;
begin
if :new.my_id is null then
open test_id_cur;
fetch test_id_cur into :new.my_id;
close test_id_cur;
end if;
end BFR_INS_TEST_TRG;
/
ALTER TRIGGER "SPL"."BFR_INS_TEST_TRG" ENABLE;
####
#!/usr/bin/perl
use strict;
use warnings;
use DBI qw(:sql_types);
print $DBI::VERSION, "\n";
exit;
my $dbh = DBI->connect('dbi:Oracle:db','user','pass',
{ AutoCommit => 0, RaiseError => 0, PrintError => 0 }
) or die "Unable to connect!: $!\n";
my $sql = qq {
INSERT INTO peck_test
VALUES ( ?,? )
RETURNING my_id INTO ?
};
my $sth = $dbh->prepare($sql);
my $id;
my $name = 'Bob';
my $desc = 'Just another guy';
$sth->bind_param (1, $name, SQL_VARCHAR);
$sth->bind_param (2, $desc, SQL_VARCHAR);
$sth->bind_param_inout(3, \$id, SQL_NUMERIC);
$sth->execute();
print "Inserted record: $id\n" if $id;
$sth->finish();
$dbh->disconnect();