Shell Script&存储过程 - 文字格式错误

时间:2017-11-09 11:35:34

标签: oracle shell stored-procedures

我有一个调用Oracle存储过程的shell脚本。 SP有两个参数 - 第一个是VARCHAR2类型,第二个是DATE类型

CREATE OR REPLACE PROCEDURE MY_SCHEMA.MY_SP_NAME(firstParameter IN VARCHAR2, dateParameter IN DATE)
IS

BEGIN

    DBMS_OUTPUT.PUT_LINE('Successfully called Procedure');

END;
/

在我的shell脚本中,我正在尝试使用以下命令执行该过程:

echo "EXECUTE MY_SCHEMA.MY_SP_NAME('TEST', '20170909') " | $ORACLE_HOME/bin/sqlplus $ORAUSER/$ORAPASS   

问题是当脚本运行时我收到以下错误:ORA-01861:literal与格式字符串不匹配。我的猜测是,我传递给date参数的'20170809'值存在问题,但我不确定如何解决这个问题。任何帮助表示赞赏。

(PS:ORACLE_HOME / USER / PASS环境变量都设置正确,我可以从脚本中成功运行SQLPLUS,因此连接到Oracle数据库没有问题)

1 个答案:

答案 0 :(得分:1)

您可以尝试使用to_date功能:

Execute my_schema.my_sp_name(‘test’,to_date(‘20170909’, ‘yyyymmdd’))

或在日期参数中使用ISO日期格式。