- 论坛徽章:
- 0
|
我写的一段shell, 想从数据库获取某个存储过程名,然后又将该存储过程名作为参数传给另外一个存储过程作,
......
PROC_NAME=`sqlplus -s $USERNAME/$PASSWORD@$DATABASE<<EOF
SET TERM OFF
SET HEAD OFF
SET FEED OFF
SELECT proc_nam FROM eden_refr_objt WHERE lower(obj_nam)=lower('$OBJECT_NAME');
EOF`
echo $PROC_NAME
sqlplus $USERNAME/$PASSWORD@$DATABASE<<EOF
execute EDEN_REFRESH.REFRESH_TAB('$USERNAME', '$OBJECT_NAME', '.' ,'$PROC_NAME');
exit;
EOF
......
根据echo $PROC_NAME返回结果看,变量PROC_NAME取到了正确的值,但是将该变量传给另外一个存储过程时,总是出现运行错误:
SQL> ERROR:
ORA-01756: quoted string not properly terminated
SQL> SP2-0734: unknown command beginning "EDEN_FLAT_..." - rest of line ignored.
SQL> Disconnected from Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
如果将$PROC_NAME用一个真实的存储过程名代替,即
execute EDEN_REFRESH.REFRESH_TAB('$USERNAME', '$OBJECT_NAME', '.' ,'$PROC_NAME');
改为
execute EDEN_REFRESH.REFRESH_TAB('$USERNAME', '$OBJECT_NAME', '.' ,'eden_flat_vhc_live_rate_fr');
其中 eden_flat_vhc_live_rate_fr 为某个存储过程名称
则执行正确。
请各位高人帮我看看是什么原因,如何解决?
谢谢! |
|