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
Post a Comment