Unique constraint violated within stored procedure executed from Perl


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Unique constraint violated within stored procedure executed from Perl
# 1  
Old 10-30-2009
Unique constraint violated within stored procedure executed from Perl

Hi!

I got an strange trouble executing a stored procedures that goes inserting line by line on a table. I mus integrate it with perl for an specific task... the hole process is controlled by e Perl script that:
  1. Load a text file calling sqlldr.
  2. Call a stored procedure that process the uploaded data and insert into other table.
I developed the stored procedure on SQL Developer and when i run it there everything goes OK. But when i invoke it from Perl or SQL*Plus, i Got "unique constraint (ORANGE.PK_SEGMENT_RANKING_DATA) violated", but in my PL/SQL i handle that exception... my code:

Code:
...
BEGIN   
    INSERT INTO segment_ranking_data (id_customer, data_date, id_category, click_counter)
      VALUES (v_id_customer, TO_DATE(v_batchdate, 'DD/MM/YYYY'), v_id_category, v_clickcount);
      
    EXCEPTION
         WHEN DUP_VAL_ON_INDEX THEN
             UPDATE segment_ranking_data SET click_counter = click_counter + v_clickcount 
             WHERE id_category=v_id_category AND id_customer=v_id_customer AND data_date=TO_DATE(v_batchdate,'DD/MM/YYYY');          

END;   
...

More info: Mi primary key is made by the fields (ID_CUSTOMER, DATA_DATE, ID_CATEGORY).

I got no more ideas for now Smilie....
# 2  
Old 10-30-2009
This question is best answered in an Oracle Forum such as OTN Discussion Forums : SQL and PL/SQL

You should also:
  1. Post the code
  2. Tell us what environment you are running under (Linux/Windows?)
  3. What is the version of Oracle you are running (8, 9, 10, 11?)
  4. Look into using the MERGE statement
  5. Oracle is rarely wrong about UNIQUE constraints. If it says it has one, it's probably right and it is a logic bug.
  6. Try dumping the values of your bind variables
.

Sam
# 3  
Old 10-30-2009
Quote:
Originally Posted by SFNYC
This question is best answered in an Oracle Forum such as OTN Discussion Forums : SQL and PL/SQL

You should also:
  1. Post the code
  2. Tell us what environment you are running under (Linux/Windows?)
  3. What is the version of Oracle you are running (8, 9, 10, 11?)
  4. Look into using the MERGE statement
  5. Oracle is rarely wrong about UNIQUE constraints. If it says it has one, it's probably right and it is a logic bug.
  6. Try dumping the values of your bind variables
Sam
I posted the part of code where i know the error is produced... I working Under SuSe Linux enterprise 10, with Perl 5.8 against Oracle 10gR2.

As i said, I know that in my process can be inserts of duplicated values for de primary key, but i handle the error trying an update instead... that's suppose to be the right logic. I cannot make a MERGE couse i'm inserting calculated variables in columns each LOOP.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Solaris

ORA-00001: unique constraint violated

Am trying to install a account script in oracle 8i and I keep getting ORA-00001: unique constraint violated as the screen shot below shows so am wondering how do i fix this i have posted the full code that is the issue. i hope some one can help me, thanks a lot http://www.livve.com/sqlbug.jpg... (2 Replies)
Discussion started by: Wpgn
2 Replies

2. Shell Programming and Scripting

Stored Procedure not executing

below code is not executing the stored procedure,not sure what the issue.Even sqllog is blank.please help me its very urgent. sqlplus -s $connect_str@$DB_ORACLE_SID >> ${SQL_LOG_FILE} << EOF set serverout on set feed off set head off set pages 0 set colsep , set tab off set lin 150... (3 Replies)
Discussion started by: katakamvivek
3 Replies

3. UNIX for Advanced & Expert Users

Procedure to be executed from shell scripts

Hi, I am looking for a script wherein i will be able to execute below procedures one by one in line and next procedures starts only when the previous one completes and also after execution of each procedure i will be getting a automted mail as "PL/SQL PROCEDURE SUCCESSFULLY EXCETUTED". ... (1 Reply)
Discussion started by: sv0081493
1 Replies

4. Shell Programming and Scripting

How to create and call mysql stored procedure in perl?

Hi, I want to create MySQL stored procedure and call the stored procedure using perl. I tried like this: use DBI; my $dbh = DBI->connect ("DBI:mysql:test", "root", "ibab", { RaiseError => 1, PrintError => 0}); $create_procedure =... (5 Replies)
Discussion started by: vanitham
5 Replies

5. UNIX for Dummies Questions & Answers

Calling stored procedure from unix

Hi, My stored procedure returns a value. How to retrieve the value and display in unix. Stored procedure CREATE OR REPLACE PROCEDURE gohan(num INT) IS BEGIN DBMS_OUTPUT.PUT_LINE('My lucky number is ' || num); END; Unix Scripting i used sqlplus -s... (7 Replies)
Discussion started by: gohan3376
7 Replies

6. Programming

Help with pl/sql stored procedure

Hi, Can anyone please let me know where to check if a particular stored procedure exists. If the procedure exists I want to display some message and if the procedure does not exists i want to exit with error message. checking from dba_objects doesnt help. suprisingly the procedure i... (3 Replies)
Discussion started by: justchill
3 Replies

7. Shell Programming and Scripting

need to call 3 stored procedure at the same time

Hi GUYS, I need to trigger 3 stored procedure at the same time.. I know how to trigger the stored procedure. If anybody can tell me how to trigger 3 different process at the same time parallelly.. that would be helpful.. Thanks for your help in advance, Magesh (1 Reply)
Discussion started by: mac4rfree
1 Replies

8. Shell Programming and Scripting

Calling MYSQL Stored Procedure?

Hi, Can anyone help me with the correct syntax to call a MYSQL stored procedure from a shell script. I have tried the following, (no input params): /usr/bin/mysql -uadmin -ppassword call TL_CLENSEDATA(); resulting in error: /home/hosting/data/scripts/dbclense.sh: line 12: syntax error... (3 Replies)
Discussion started by: kshelluser
3 Replies

9. Shell Programming and Scripting

Stored Procedure on NT/SQLServer

Hi: How will I execute a Stored Procedure that sits on NT/SQLServer. Any help would be appreciated. Thanks (3 Replies)
Discussion started by: mayohan
3 Replies

10. UNIX for Advanced & Expert Users

Oracle stored procedure.

I am using sqlplus. I have the stored procedure name. How can i print the stored procedure content? (2 Replies)
Discussion started by: kamil
2 Replies
Login or Register to Ask a Question