pass null value to sql script from korn shell script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting pass null value to sql script from korn shell script
# 8  
Old 11-09-2011
Quote:
Originally Posted by megha2525
sqlplus -s /nolog @$sqlfile "${1-NULL}" $2 $3 $4

I have not passed any value for $1 ... so i know $1 is empty.
I passed in values for $2 $3 $4.
whenever $1 $2 $3 $4 are passed from shell to sqlplus they are referred to as &1 &2 &3 &4 .

now we know that I passed no value for $1 ,
but in sql script what is happening is the first non null value that is from shell i.e, $2 in our case now ... is being treated as &1 .

so its not working Smilie

---------- Post updated at 04:56 PM ---------- Previous update was at 04:38 PM ----------

Do u know how can I display the values passed from korn shell in the sql script?
for eg in the korn shell i am passing a value like this.

sqlplus -s /nolog @sqlpfile $1


in the sql script i am doing this.
declare
var1 varchar2(50);
begin
var1='&1';
dbms_output.put_line(var1);
end;

i am getting an error
PLS-00103: Encountered the symbol "=" when expecting one of the following:
:= . ( @ % ;
The symbol ":= was inserted before "=" to continue.

not sure whats going on

Code:
$
$
$ # Here's my Oracle SQL script
$
$ cat -n myscript.sql
     1  set verify off feed off time off timing off
     2  declare
     3    v1  varchar2(10);
     4    v2  varchar2(10);
     5    v3  varchar2(10);
     6    v4  varchar2(10);
     7  begin
     8    v1 := '&1';
     9    v2 := '&2';
    10    v3 := '&3';
    11    v4 := '&4';
    12    --
    13    if v1 is null then
    14      dbms_output.put_line ('SQL variable v1 is NULL');
    15    else
    16      dbms_output.put_line ('SQL variable v1 is NOT NULL; its value is '||v1);
    17    end if;
    18    --
    19    if v2 is null then
    20      dbms_output.put_line ('SQL variable v2 is NULL');
    21    else
    22      dbms_output.put_line ('SQL variable v2 is NOT NULL; its value is '||v2);
    23    end if;
    24    --
    25    if v3 is null then
    26      dbms_output.put_line ('SQL variable v3 is NULL');
    27    else
    28      dbms_output.put_line ('SQL variable v3 is NOT NULL; its value is '||v3);
    29    end if;
    30    --
    31    if v4 is null then
    32      dbms_output.put_line ('SQL variable v4 is NULL');
    33    else
    34      dbms_output.put_line ('SQL variable v4 is NOT NULL; its value is '||v4);
    35    end if;
    36  end;
    37  /
    38  exit
    39
$
$
$ # And here's my Unix shell script with login credentials replaced
$
$ cat -n tstscript.sh
     1  #!/usr/bin/bash
     2  PARAM1="$1"
     3  PARAM2="$2"
     4  PARAM3="$3"
     5  PARAM4="$4"
     6  ##
     7  echo "Within the Unix script now..."
     8  echo "Script parameter PARAM1 = \"$PARAM1\""
     9  echo "Script parameter PARAM2 = \"$PARAM2\""
    10  echo "Script parameter PARAM3 = \"$PARAM3\""
    11  echo "Script parameter PARAM4 = \"$PARAM4\""
    12  ##
    13  echo "=============================================="
    14  echo "About to call the Oracle script now..."
    15  sqlplus -s user/passwd@db @myscript.sql "$PARAM1" "$PARAM2" "$PARAM3" "$PARAM4"
    16
$
$
$ # I'll execute the Unix shell script now, passing four parameters
$ # that are in turn passed to the Oracle SQL script
$
$ ./tstscript.sh "AAA" "BBB" "CCC" "DDD"
Within the Unix script now...
Script parameter PARAM1 = "AAA"
Script parameter PARAM2 = "BBB"
Script parameter PARAM3 = "CCC"
Script parameter PARAM4 = "DDD"
==============================================
About to call the Oracle script now...
SQL variable v1 is NOT NULL; its value is AAA
SQL variable v2 is NOT NULL; its value is BBB
SQL variable v3 is NOT NULL; its value is CCC
SQL variable v4 is NOT NULL; its value is DDD
$
$
$ # Try out NULLs now
$
$ ./tstscript.sh "AAA" "" "CCC" "DDD"
Within the Unix script now...
Script parameter PARAM1 = "AAA"
Script parameter PARAM2 = ""
Script parameter PARAM3 = "CCC"
Script parameter PARAM4 = "DDD"
==============================================
About to call the Oracle script now...
SQL variable v1 is NOT NULL; its value is AAA
SQL variable v2 is NULL
SQL variable v3 is NOT NULL; its value is CCC
SQL variable v4 is NOT NULL; its value is DDD
$
$
$ # And more
$
$ ./tstscript.sh "" "" "CCC" ""
Within the Unix script now...
Script parameter PARAM1 = ""
Script parameter PARAM2 = ""
Script parameter PARAM3 = "CCC"
Script parameter PARAM4 = ""
==============================================
About to call the Oracle script now...
SQL variable v1 is NULL
SQL variable v2 is NULL
SQL variable v3 is NOT NULL; its value is CCC
SQL variable v4 is NULL
$
$
$ # And some more
$
$ ./tstscript.sh "" "BBB" "CCC" ""
Within the Unix script now...
Script parameter PARAM1 = ""
Script parameter PARAM2 = "BBB"
Script parameter PARAM3 = "CCC"
Script parameter PARAM4 = ""
==============================================
About to call the Oracle script now...
SQL variable v1 is NULL
SQL variable v2 is NOT NULL; its value is BBB
SQL variable v3 is NOT NULL; its value is CCC
SQL variable v4 is NULL
$
$
$ # And some more
$
$ ./tstscript.sh "" "" "" "DDD"
Within the Unix script now...
Script parameter PARAM1 = ""
Script parameter PARAM2 = ""
Script parameter PARAM3 = ""
Script parameter PARAM4 = "DDD"
==============================================
About to call the Oracle script now...
SQL variable v1 is NULL
SQL variable v2 is NULL
SQL variable v3 is NULL
SQL variable v4 is NOT NULL; its value is DDD
$
$
$ # And finally this...
$
$ ./tstscript.sh "" "" "" ""
Within the Unix script now...
Script parameter PARAM1 = ""
Script parameter PARAM2 = ""
Script parameter PARAM3 = ""
Script parameter PARAM4 = ""
==============================================
About to call the Oracle script now...
SQL variable v1 is NULL
SQL variable v2 is NULL
SQL variable v3 is NULL
SQL variable v4 is NULL
$
$
$

tyler_durden

---------- Post updated at 11:49 PM ---------- Previous update was at 06:20 PM ----------

Quote:
Originally Posted by megha2525
...
in the sql script i am doing this.
declare
var1 varchar2(50);
begin
var1='&1';
dbms_output.put_line(var1);
end;

i am getting an error
PLS-00103: Encountered the symbol "=" when expecting one of the following:
:= . ( @ % ;
The symbol ":= was inserted before "=" to continue.

not sure whats going on
It's actually quite easy to see what's going on if you pay close attention to that error message.

The Oracle PL/SQL engine doesn't quite understand the "equals" character ("=") at line 4 (you've used it at one place only). Hence it says this -

Code:
PLS-00103: Encountered the symbol "=" when expecting one of the following:
:= . ( @ % ;

which means that it expected something but found something else at line 4.

The assignment operator that you intended at line 4 is actually ":=", and not "=". Hence the PL/SQL engine says this -

Code:
The symbol ":= was inserted before "=" to continue.

Of course, it's just a guess on its part, and it doesn't really fix the issue.

tyler_durden
This User Gave Thanks to durden_tyler For This Post:
# 9  
Old 11-09-2011
Hi durden_tyler,

Thank you so much for the detailed scripts. I am doing the same thing now as you mentioned.
Here is the requirement.
I am passing 4 parameters from the concurrent manager in oracle apps .
param1 is a number data type
param2 is a varchar2 data type ( e.g: this is a test)
param3 and param4 are again number data types.
In the concurrent manager i am calling the korn shell script.
I am accepting the values passed from concurrent manager in korn shell and passing them to the sql script in exactly the same way as you said.
I am getting this error.
error 45 intializing SQL * Plus.
Internal error .
what could be the issue ?
# 10  
Old 11-09-2011
Quote:
Originally Posted by megha2525
...
I am getting this error.
error 45 intializing SQL * Plus.
Internal error .
what could be the issue ?
No idea what the issue could be. Your post is not descriptive enough.
Cut and paste the portion of your application/tool where you see this error. Use code tags while posting.

tyler_durden
# 11  
Old 11-09-2011
Attached is the screenshot of the error message

Last edited by megha2525; 11-09-2011 at 11:49 AM..
# 12  
Old 11-09-2011
Have you checked the log file mentioned: "rpae850_extract.log"?

Maybe there you will find further information about the error reported!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Pass script with parameter in korn shell script

I have written a script which will take input parameter as another script. However, if the script passed as input parameter has parameters then this script doesn't work. I have a script b.ksh which has 1 and 2 as parameters I have a script c.ksh which has 3,4 and 5 as parameters vi a.ksh... (1 Reply)
Discussion started by: Vee
1 Replies

2. Shell Programming and Scripting

Unable to pass value from .Shell script to .SQL file

Hi All, I am new to shell script. I am trying to pass value from .sh file to .sql file . But I am able to run the .sql file from .sh file with values in sql file. But I am unable to pass the values from .sh file. can some one please help to resolve this. here is my .sh file s1.sh ... (4 Replies)
Discussion started by: reddy298599
4 Replies

3. Shell Programming and Scripting

How to pass Oracle sql script as argument to UNIX shell script?

Hi all, $ echo $SHELL /bin/bash Requirement - How to pass oracle sql script as argument to unix shell script? $ ./output.sh users.sql Below are the shell scripts and the oracle sql file in the same folder. Shell Script $ cat output.sh #!/bin/bash .... (7 Replies)
Discussion started by: a1_win
7 Replies

4. Shell Programming and Scripting

Korn shell script - SQL statement challenges

Hi scripting experts. I have some coding challenges that I'm hoping you can help me out. I have one file#1 that contains the following sql statement that spans over multiple lines: sql Select /*+ use_has(a,b) */ * from customer a, customer_address b where a.id = b.id... (1 Reply)
Discussion started by: pchang
1 Replies

5. Programming

pass value from Oracle sql to Korn shell

Hi All , I am trying to pass a value from sqlplus to korn shell . There is a table tab1 in Oracle that has a column userdate. I need to pass the userdate to the korn shell . This is what I am doing . VALUE=`sqlplus -silent username/password << END set pagesize 0 feedback off verify off... (14 Replies)
Discussion started by: megha2525
14 Replies

6. Shell Programming and Scripting

How to Pass the Output Values from the PL/SQL Procedure to Shell Script?

hi, Could anyone tell me how to pass the output values of the PL/SQL procedure to Shell script and how to store that values in a shell script variable... Thanks in advance... (5 Replies)
Discussion started by: funonnet
5 Replies

7. Shell Programming and Scripting

How to pass arguments to SQL file passed in shell script?

Hi, I am using SYBASE database. in my script i am connecting to DB via using isql. isql -U${S_USER} -S${S_SERV} -D${S_DB} -P${S_PWD} -b0 -w3000 -h0 -s"|" -i${MYDIR}/ABC.sql -oXYZ.txt << FINSQL i am taking a ABC.sql file to use the queries written in it and storing the output in... (3 Replies)
Discussion started by: dazdseg
3 Replies

8. UNIX for Advanced & Expert Users

Accessing PL/SQL OUT variables in Korn Shell Script

Hello All, I was just wondering if there is any direct way to access PL/SQL OUT variables from Korn Shell Script. I could already figure out how to return a single value back from PL/SQL to Shell Script (using bind variable). But, what if we want to return multiple values? One option I... (4 Replies)
Discussion started by: bright_future
4 Replies

9. Shell Programming and Scripting

How to pass pl/sql table values to shell script

Hello, i am using '#!/bin/bash', i want to make a loop in pl/sql, this loop takes values from a table according to some conditions, each time the loop choose 3 different variables. What i am not able to do is that during the loop i want my shell script to read this 3 variables and run a shell... (1 Reply)
Discussion started by: rosalinda
1 Replies

10. UNIX for Dummies Questions & Answers

how to pass values from oracle sql plus to unix shell script

how to pass values from oracle sql plus to unix shell script (2 Replies)
Discussion started by: trichyselva
2 Replies
Login or Register to Ask a Question