Calling sql file from shell script with parameters.


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Calling sql file from shell script with parameters.
# 1  
Old 06-29-2010
Calling sql file from shell script with parameters.

Hi,
I am calling a sql file script.sql from shell script and passing few parameters also as shown below:

Code:
 sqlplus -S  id/password @script.sql  $param1 $param2

Now,In sql file I have to create a extract text file after querying oracle tables based on the parameters passed(param1,param2) as shown below:

Code:
 
SPOOL  a.txt
 
SELECT col1,col2,col3,........coln
FROM table
where col1 ='&1' and col2=`&2';
/
SPOOL OFF

This may contain thousand of rows. The extract file will contain data row by row and each column value will be separated with a tab space. I am using SPOOL to this but the extract file is giving me values of single row in multiple rows and the passed parameter values (param1 & param2) are also getting printed in the extract file at the top with old and new labels, which I don't want to be present in my extract file. I just want the data rows in my extract file separated by tab.
I also want some status code to be returned back to my shell script which will determine whether the sql file is successfully executed or not based on which error message will be sent via email.

Please help me with the sample examples to resolve this problem.

Thanks in advance.

Regards,
Anil
# 2  
Old 06-29-2010
Quote:
Originally Posted by anil029
... but the extract file is giving me values of single row in multiple rows...
That's due to the default column lengths being insufficient for the column data. Since you want the output to be tab separated, you will have to append the columns using the tab character, which should eliminate this problem.

Quote:
... and the passed parameter values (param1 & param2) are also getting printed in the extract file at the top with old and new labels, which I don’t want to be present in my extract file. ...
That's because of the default value ("ON") of the sqlplus variable "verify". Set this value to "OFF" like so -

Code:
set verify off

Quote:
... I just want the data rows in my extract file separated by tab. ...
As mentioned earlier, you'll have to append all the columns using the tab character.

Code:
select col1||chr(9)||col2||chr(9)||... <and so on>

Quote:
I also want some status code to be returned back to my shell script which will determine whether the sql file is successfully executed or not ...
One easy way to do this is to add the "WHENEVER" sqlplus command at the beginning of your sqlplus session.

Code:
whenever sqlcode exit 1

Due to this, the sqlplus session will terminate in case of an error and the exit status ($?) will be set to 1. You can then check this value to take further action - sending an email, for instance.

Quote:
... based on which error message will be sent via email. ...
See above.

HTH,
tyler_durden
# 3  
Old 06-30-2010
Sending mail in shell script

Hi Tyler,
Thanks for your reply.It really helped.But now i have another problem.
I am trying to send mail from shell script based on the exit status ($?) of the sqlplus. The code I am using is below:

Code:
 
#!/bin/sh/
............................
............................
sqlplus -S id/password @script.sql $param1 $param2
 
echo "Sucess code is $?"  
 
if [$? = 1]
then
mail -s "Error Message" abc@xyz.com <aaa/bbb/data.txt
fi

The mail will be sent to “abc@xyz.com” and the content of the mail will be read from file aaa/bbb/data.txt with subject as “Error Message”. The above code is getting failed with the error message “Not found” with the line number of “if [$? = 1]” despite of printing the value of $? correctly.Can anyone tell me where I am going wrong?
One more thing in my extract file the data is getting populated from 2nd line.Can anyone tell me the reason for that? I want it from 1st line only.

Thanks in advance.

Regards,
Anil
# 4  
Old 06-30-2010
"[" is a shell builtin test operator. And because it is an operator, it should be surrounded by spaces. Otherwise the shell gets confused (because the operand and the operator are indistinguishable).

tyler_durden
# 5  
Old 06-30-2010
Hi Tyler,
That worked.Thanks a ton.Can you just tell me the reason for having data in extract file from 2nd row not from first?

Thanks,
Anil
# 6  
Old 06-30-2010
Quote:
Originally Posted by anil029
...Can you just tell me the reason for having data in extract file from 2nd row not from first?
...
Sorry, I don't think I understand your question.
You want me to tell you why your extract file has data from 2nd row and not from the first ??

Is your SQL statement similar to the following ?

Code:
SELECT col1||chr(9)||col2||chr(9)||col3
FROM table
where col1 ='&1' and col2=`&2';

I have no idea why Oracle would omit the first row.
Unless there's something else you want to add.

tyler_durden
# 7  
Old 06-30-2010
Problem in extract file

Hi Tyler,
My extract file is fetching all the data from table but the problem is inspite of populating the rows from 1st line,it is getting inserted from 2nd row.Problem is that first line is blank.I just have to move whole data one row up.I hope it is clear now.

Thanks,
Anil
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

[Solved] Calling PL/SQL Block into Shell Script

Hi, i have one simple PL/SQL Block and i have saved it as .sql file, which i am trying to call from UNIX script. PL/SQL block structure CONNECT DB_NAME/PWD@Database whenever SQLERROR EXIT 1; Declare ..Variables... BEGIN --Code-- exception END; exit; I have save this block as... (3 Replies)
Discussion started by: abhii
3 Replies

2. Shell Programming and Scripting

shell script hangs while calling sql file

I have a master shell script which calls some 40 shell scripts. All the shell scripts calls a sql file which executes some sql statements. I run these scripts in parallel such that it saves me time. When i executed them i saw some strange behavior. Firstly, I found that some scripts among the 40... (1 Reply)
Discussion started by: sushi
1 Replies

3. Shell Programming and Scripting

calling a sql file in my shell script

Hi, I want to call a sql file in my shell script. see the below code:- if ] then ( isql -U${S_USER} -S${S_SERV} -w100 -b -h0 <<ENDSQL | sed -e "s/Password://" ${S_PWD} set nocount on go use ${S_DB} go // need to call a file name... (16 Replies)
Discussion started by: dazdseg
16 Replies

4. UNIX for Advanced & Expert Users

Calling sql file from shell script

Hi I have a shell script that call a sql file. The sql file will create a spool file. My requirement is, when ever i get an OS error like file not found. I have to log it in a log file. Could some who worked in a like scenario help me by giving the code sample. Many Thanks.. (1 Reply)
Discussion started by: chintapalli001
1 Replies

5. Shell Programming and Scripting

Calling sql in shell script with parameters

Dear All, I want to call an sql script within a unix shell script. I want to pass a parameter into the shell script which should be used as a parameter in teh sql script. e.g $ ./shell1.sh 5000129 here 5000129 is a prameter inside shell script i am calling one sql script e.g. ... (2 Replies)
Discussion started by: Radhe
2 Replies

6. Shell Programming and Scripting

Calling SQL LDR and SQL plus scripts in a shell script

Hi- I am trying to achieve the following in a script so I can schedule it on a cron job. I am fairly new to the unix environment... I have written a shell script that reads a flat file and loads the data into an Oracle table (Table1) via SQLLDR. This Works fine. Then, I run a nested insert... (5 Replies)
Discussion started by: rajagavini
5 Replies

7. Shell Programming and Scripting

calling sql file from shell script

Hello everybody I need help calling sql file from shell script. Can anyone help me creating a small shell script which calls an sql file . The .sql file should contain some select statements like select emp_no from emp_table; select emp_id from emp_table; And the results should be... (6 Replies)
Discussion started by: dummy_needhelp
6 Replies

8. UNIX for Advanced & Expert Users

Calling PL/SQL Script in Shell Programming

Hi all, In a shell script I need to pass two parameters to a pl/sql script and get the ouput of the pl/sql script and use it in shell script. For example Shell script : test.sh PL/SQL script : get_id.sql parameter1 parameter2 Actually get_id.sql has a select statement something... (1 Reply)
Discussion started by: lijju.mathew
1 Replies

9. Shell Programming and Scripting

Problem with Calling sql file from shell script

I have created abc.sh file which will set the environment variables (UNIX env variables as well as ORACLE required variables like ORACLE_SID,ORACLE_HOME etc) and then calls a function file which checks for starts some logs and then it will try to execute the .sql file. The .sh, function file are as... (1 Reply)
Discussion started by: sskc
1 Replies

10. Shell Programming and Scripting

Calling SQL scripts through Shell Script

Oracle and Scripting gurus, I need some help with this script... I am trying to add the query SELECT * FROM ALL_SYNONYMS WHERE SYNONYM_NAME = 'METADATA' in the current script.... Read the result set and look for the TABLE_NAME field. If the field is pointing to one table eg.... (18 Replies)
Discussion started by: madhunk
18 Replies
Login or Register to Ask a Question