oracle - Iterating through PL/SQL result in SHELL -


i want iterate on pl/sql rows in shell script , each row want execute code using current row. @ point got:

    value='sqlplus -s /nolog <<eof      connect ${connect}        select smth table;         /         exit         eof'  in "${value[@]}" ##some code using "i" variable done 

at point 5 rows code executes once. appears doesn't iterate @ all. ideas how can fix that?

you can iterate resultset follows:

sql> select car_model available_models   2  group car_model ;  car_model ------------------------------ corsair executive country squire  sql> 

rewrite shell script (using while) follows:

[oracle@ora12c 1]$ cat test.sh connect='z_test/welcome1' value=`sqlplus -s /nolog <<eof      connect ${connect}      set head off      select car_model available_models      group car_model         /         exit eof`  echo "resultset: " echo "${value}"  echo " "  echo "now iterate ..." let rec=0  echo "${value}" |while read line   echo "processing $rec: $line"   let rec=rec+1 done  [oracle@ora12c 1]$ 

and expected output:

[oracle@ora12c 1]$ ./test.sh resultset:  corsair executive country squire  iterate ... processing 0: processing 1: corsair processing 2: executive processing 3: country squire 

note line #0 blank , expected, because part of resultset too.

adding "set pagesize 0" remove blank line:

[oracle@ora12c 1]$ cat test.sh connect='z_test/welcome1' value=`sqlplus -s /nolog <<eof      connect ${connect}      set head off      set pagesize 0      select car_model available_models      group car_model         /         exit eof` ...... 

expected run:

[oracle@ora12c 1]$ ./test.sh resultset: corsair executive country squire  iterate ... processing 0: corsair processing 1: executive processing 2: country squire [oracle@ora12c 1]$ 

regards


Comments