我已经编写了一个shell脚本,我试图更新oracle表,而更新表我遇到以下错误,另一方面,当我执行给定的硬编码值时,它正在工作精细。
代码
DAT_SUPPL_ID='21'
PA_OLT_CD='32'
DT_PY_FD_TY='43'
DT_FL_MTH='M201565'
sqlplus -silent XXX/YYY@UDF <<!
UPDATE HX_DT_PUC_DOL SET PROC_STA_TS=SYSTIMESTAMP,PROC_ID=1 WHERE DT_SPPL_INT_ID='${DAT_SUPPL_ID}' AND PH_CD='${PA_OLT_CD}' AND DAT_PY_FD_TY='${DT_PY_FD_TY}' AND DT_FLE_MONTH='${DT_FL_MTH}'
exit;
!
错误:
UPDATE HX_DT_PUC_DOL SET PROC_STA_TS=SYSTIMESTAMP,PROC_ID=1 WHERE DT_SPPL_INT_ID='21' AND PH_CD='1981808' AND DAT_PY_FD_TY='1' AND DT_FLE_MONTH='M200911'
*
ERROR at line 1:
ORA-00942: table or view does not exist
工作代码
sqlplus -silent XXX/YYY@UDF <<!
UPDATE HX_DT_PUC_DOL SET PROC_STA_TS=SYSTIMESTAMP,PROC_ID=1 WHERE DT_SPPL_INT_ID='21' AND PH_CD='1981808' AND DAT_PY_FD_TY='1' AND DT_FLE_MONTH='M200911'
!
答案 0 :(得分:0)
在sql结束后添加分号。
bash-4.2$ ./test_sql.sh
SQL*Plus: Release 11.2.0.2.0 Production on Tue Apr 10 16:16:30 2018
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
SQL> SQL> 2 exit
*
ERROR at line 2:
ORA-00933: SQL command not properly ended
SQL> Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
bash-4.2$ more test_sql.sh
#!/bin/sh
test_num1='1234'
test_char2='@T!ger'
sqlplus hr/hr <<!
UPDATE TEST_TABLE SET col1=SYSDATE , col2=4 WHERE col3='${test_num1}' AND col4='${test_char2}'
exit;
!
没有;
的sql{{1}}