Re: More of an oracle question than dbi...

"Martin J. Evans" <[email protected]>
Newsgroups gmane.comp.lang.perl.modules.dbi.general
Organization Easysoft Limited
Message-ID <[email protected]>
On 09/01/12 16:30, Bruce Johnson wrote:
> ...but I'm trying to do this via a script.
>
> The code:
>
> create or replace trigger resource_key before insert on resources
> for each row
> begin
> select resource_id_seq.nextval into :new.resource_id from dual;
> end;
>
> Works in sqlplus, but does not when executed via dbi or via jdbc.
>
> What I end up with instead is the code in the trigger:
>
> create or replace trigger resource_key before insert on resources
> for each row
> begin
> select resource_id_seq.nextval into :new.resource_id from dual
>
> And an error about an invalid sql command for the 'end;' bit.
>
> How do I make this work within dbi?
>
>

The following works fine for me:

use DBI;
use strict;
use warnings;

my $h = DBI->connect('dbi:Oracle:host=xxx.yyy.zzz;sid=xxx', 'xxx', 'yyy',
                      {RaiseError => 1});
my $sql = <<'EOT';
create or replace trigger job_audit_t1 before insert or update on job_audit for each row
   begin
      IF INSERTING THEN
         select job_audit_seq.nextval INTO :new.job_audit_id from dual;
         :new.created_by_user := user;
      ELSIF UPDATING THEN
         :new.modified_by_user := user;
      END IF;
   end;
EOT
$h->do($sql);

Show us the code, error and the SQL instead of just the SQL.

Martin
-- 
Martin J. Evans
Easysoft Limited
http://www.easysoft.com
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.