oracle - passing shell variable to plsql procedure -
i trying run procedure shell script. issue parameters not read procedure
#! /bin/bash circle="genx" date="2015/09/29" version="v2" /usr/oracle/u01/app/product/11.2.0/client_1/bin/sqlplus admin/admin@testdb <<"eof" begin gen_automation.delete_invalid_data('$circle','$date','$version'); commit; end; / "eof"
it doesn't heredoc limit string being quoted; can reproduce , removing quotes fixes it:
/usr/oracle/u01/app/product/11.2.0/client_1/bin/sqlplus admin/admin@testdb <<eof begin gen_automation.delete_invalid_data('$circle','$date','$version'); commit; end; / eof
this nothing oracle, it's how shell , heredoc working; this:
cat <<"eof" $circle "eof"
... prints $circle
instead of genx
too.
quoting or escaping "limit string" @ head of here document disables parameter substitution within body. reason quoting/escaping limit string escapes $, `, , \ special characters, , causes them interpreted literally.
Comments
Post a Comment