04-05-2008
Perl + Oracle + bind_param_inout()
Hi. I'm attempting to assign a variable via a field that is using an autoincrement sequence. I'm trying to use the Oracle bind_param_inout() procedure to pass the value by reference. The code goes a bit like this:
*************
my $sql=q(INSERT INTO MESSAGES (message_id, message_text, message_category, start_date, stop_date, admin_comments, time_submitted) VALUES (?,?,?,?,?,?,?) RETURNING message_id INTO ?);
my $sth=$dbh->prepare($sql);
die "Could not prepare query. Check SQL syntax."
unless defined $sql;
my $newMessageID;
$sth->bind_param_inout(8,\$newMessageID, 38);
$sth->execute('messages_id_pkseq.nextval', $messageText, $messageCategory, $startDate, $stopDate, $adminComments, $timeStamp);
****************
By example, bind_param_inout seems to by far the best way to retrieve the value, but the examples I have seen so far all assume no arguments to sth->execute(). In this case I have arguments in my execute statement, and that seems to be where my issues lie. Apache returns:
***
DBD::Oracle::st execute failed: called with 7 bind variables when 8 are needed [for Statement "INSERT INTO MESSAGES (message_id, message_text, message_category, start_date, stop_date, admin_comments, time_submitted) VALUES (?,?,?,?,?,?,?) RETURNING message_id INTO ?" with ParamValues: 5=undef, 6=undef, 3=undef, 7=undef, 1=undef, 8=undef, 4=undef, 2=undef]
***
Wondering if anyone could shed some light as to why the DB is expecting the eight value (the ? after the RETURNING clause); it should be assigned via the bind_param_inout() function by my understanding. Could very well be something I am missng here though. There may be a way to pass it in the execute() statement as well. but just passing $newMessageID as the eight parameter returns an error. Thanks in advance for assistance.
10 More Discussions You Might Find Interesting
1. UNIX for Advanced & Expert Users
I am trying to install perl-DBD-Oracle-1.16-1.2.rpm on Suse (SLE 9), like
rpm -Uvh perl-DBD-Oracle-1.16-1.2.rpm but I keep getting the following error message
error: Failed dependencies:
libclntsh.so.10.1 is needed by perl-DBD-Oracle-1.16-1.2.el4
libnnz10.so is needed by... (1 Reply)
Discussion started by: hassan1
1 Replies
2. UNIX for Dummies Questions & Answers
Hi friends,
I am new to Perl programming. I have a requirement, using perl I need to connect to Oracle DB and get some records ( on unix environment). I googled and found that we need to use DBD (Database Drivers), DBI (DataBase Interface) to connect to oracle. I tried using " sqlplus... (1 Reply)
Discussion started by: satguyz
1 Replies
3. Programming
hi i am trying to connect to an oracle database using dbi and i get this ::
Driver has not implemented the disconnect_all method. at /opt/perl/lib/site_perl/5.8.0/sun4-solaris/DBI.pm line 575
END failed--call queue aborted.
for all i know, the script was working earlier, but has... (1 Reply)
Discussion started by: poggendroff
1 Replies
4. Shell Programming and Scripting
Hi Friends,
I am having Perl 5 and Oracle 9i. I just wanna to connect Oracle DB & to perform some select query statement.
Could anyone pls let me know.
I've tried below command which i found in some website, But it throws some error.:confused:
Executed:
perl -e 'use DBI; print... (1 Reply)
Discussion started by: Vijayakumarpc
1 Replies
5. Shell Programming and Scripting
Hello All,
I need to now how can I establish connection with oracle database then shutdown abort and then startup, In other words need to implement the following lines to perl script:
export ORACLE_SID=<some user>
${ORACLE_HOME}/bin/sqlplus /nolog
SQL> connect / as sysdba
SQL> shutdown... (2 Replies)
Discussion started by: Alalush
2 Replies
6. Shell Programming and Scripting
I want to use Perl to connect to a remote Oracle DB
I have no oracle installation on my server (and dont plan on installing one) I am using solaris 9 on x86 server.
Is this possible?
I basically want to run some basic sql queries on the remote oracle db which I have access to using perl on my... (0 Replies)
Discussion started by: frustrated1
0 Replies
7. Shell Programming and Scripting
Hi,
#!/usr/bin/perl
my @sid=`cat /etc/oratab|grep -v "^#"|grep -v "*"|grep -v "#"|cut -d: -f1 -s`;
my $log;
my $body="";
my $oraclesid="";
chomp($hostname);
foreach my $oraclesid (@SID){
$body="";
chomp($oraclesid);
$dbname=print ($oraclesid);
print... (2 Replies)
Discussion started by: rocky1954
2 Replies
8. Shell Programming and Scripting
Hi,
we have PERL 64-bit build with Oracle 10g DBD . PERL database connection are working fine. Database upgraded to 11.2 and in PERL documents it says still use 10g DBD to connect to 11.2. when I try some test connections, I am getting this error . Did anyone see this error before .
I set the... (2 Replies)
Discussion started by: talashil
2 Replies
9. Shell Programming and Scripting
Hi,
I am new to perl.How to query oracle database with perl???
Thanks (1 Reply)
Discussion started by: tdev457
1 Replies
10. Shell Programming and Scripting
I've a Centralized Server which can connect to all Oracle Databases.
When I was trying the below code it doesn't work, But tnsping was working fine.
#!D:/perl5/bin/perl.exe
use DBI;
my $dbh = DBI->connect('dbi:Oracle:QBDIWCE', 'IDUSER', 'SECRET123#' ) || die( $DBI::errstr . "\n" ) ;
... (1 Reply)
Discussion started by: ilugopal
1 Replies
LEARN ABOUT DEBIAN
sql::translator::parser::oracle
SQL::Translator::Parser::Oracle(3pm) User Contributed Perl Documentation SQL::Translator::Parser::Oracle(3pm)
NAME
SQL::Translator::Parser::Oracle - parser for Oracle
SYNOPSIS
use SQL::Translator;
use SQL::Translator::Parser::Oracle;
my $translator = SQL::Translator->new;
$translator->parser("SQL::Translator::Parser::Oracle");
DESCRIPTION
From http://www.ss64.com/ora/table_c.html:
CREATE [GLOBAL TEMPORARY] TABLE [schema.]table (tbl_defs,...)
[ON COMMIT {DELETE|PRESERVE} ROWS]
[storage_options | CLUSTER cluster_name (col1, col2,... )
| ORGANIZATION {HEAP [storage_options]
| INDEX idx_organized_tbl_clause}]
[LOB_storage_clause][varray_clause][nested_storage_clause]
partitioning_options
[[NO]CACHE] [[NO]MONITORING] [PARALLEL parallel_clause]
[ENABLE enable_clause | DISABLE disable_clause]
[AS subquery]
tbl_defs:
column datatype [DEFAULT expr] [column_constraint(s)]
table_ref_constraint
storage_options:
PCTFREE int
PCTUSED int
INITTRANS int
MAXTRANS int
STORAGE storage_clause
TABLESPACE tablespace
[LOGGING|NOLOGGING]
idx_organized_tbl_clause:
storage_option(s) [PCTTHRESHOLD int]
[COMPRESS int|NOCOMPRESS]
[ [INCLUDING column_name] OVERFLOW [storage_option(s)] ]
nested_storage_clause:
NESTED TABLE nested_item STORE AS storage_table
[RETURN AS {LOCATOR|VALUE} ]
partitioning_options:
Partition_clause {ENABLE|DISABLE} ROW MOVEMENT
Column Constraints (http://www.ss64.com/ora/clause_constraint_col.html)
CONSTRAINT constrnt_name {UNIQUE|PRIMARY KEY} constrnt_state
CONSTRAINT constrnt_name CHECK(condition) constrnt_state
CONSTRAINT constrnt_name [NOT] NULL constrnt_state
CONSTRAINT constrnt_name REFERENCES [schema.]table[(column)]
[ON DELETE {CASCADE|SET NULL}] constrnt_state
constrnt_state
[[NOT] DEFERRABLE] [INITIALLY {IMMEDIATE|DEFERRED}]
[RELY | NORELY] [USING INDEX using_index_clause]
[ENABLE|DISABLE] [VALIDATE|NOVALIDATE]
[EXCEPTIONS INTO [schema.]table]
Note that probably not all of the above syntax is supported, but the grammar was altered to better handle the syntax created by
DDL::Oracle.
AUTHOR
Ken Youens-Clark <kclark@cpan.org>.
SEE ALSO
SQL::Translator, Parse::RecDescent, DDL::Oracle.
perl v5.14.2 2012-01-18 SQL::Translator::Parser::Oracle(3pm)