无法更新oracle表

时间:2018-04-10 14:56:53

标签: linux oracle shell

我已经编写了一个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'
!

1 个答案:

答案 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}}