有些环境变量想要从shell传到sql文件里面,该如何传值呢?跟普通变量一样。
<<shell--Test.sh>>
BK_DIR="dmpfiles"
BK_NM="Test_001.dmp"
sqlplus -s S001/PASSWORD@TEST_1 @/home/s001/S001.sql ${BK_DIR} ${BK_NM} << EOF
exit $?
EOF
EXCODE=$?
if [ $EXCODE -ne 0 ]; then
echo "error :sqlplus Error"
exit 1
fi
exit 0
<<S001.sql>>
WHENEVER SQLERROR EXIT sql.sqlcode;
-- error code definition
VARIABLE v_error_cd NUMBER;
DECLARE
bk_dir VARCHAR(80);
bk_nm VARCHAR(80);
BEGIN
--SQL return value (1:error、0:normal)
:v_error_cd := 1;
bk_dir:='&1';
bk_nm:='&2';
END;
/
-- return error code
EXIT :v_error_cd;
注意sql文件里面,要在变量两边加个单引号,不然会提示变量没有定义的错误。