Sponsored Content
Top Forums Shell Programming and Scripting Perl + Oracle + bind_param_inout() Post 302182076 by mirage4d on Saturday 5th of April 2008 10:15:15 AM
Old 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: Smilie5=undef, Smilie6=undef, Smilie3=undef, Smilie7=undef, Smilie1=undef, Smilie8=undef, Smilie4=undef, Smilie2=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

perl-DBD-Oracle

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

PERL - Oracle

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

perl dbi to oracle getting disconnect_all for oracle dbi help

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

How to connect ORACLE using PERL

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

Oracle using perl

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

Perl connect to remote oracle db without local oracle installation

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

Need help in perl script for oracle

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

PERL and Oracle 11.2 question

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

perl- oracle sql query

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

Perl Oracle connection error

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
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)
All times are GMT -4. The time now is 12:36 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy