Linux-BShell中调用sqlplus执行sql文件,如何传值

有些环境变量想要从shell传到sql文件里面,该如何传值呢?跟普通变量一样。

<>

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

 

<>

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文件里面,要在变量两边加个单引号,不然会提示变量没有定义的错误。

你可能感兴趣的:(#,豆知识,数据库,数据库,shell)