我有一个调用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数据库没有问题)
答案 0 :(得分:1)
您可以尝试使用to_date
功能:
Execute my_schema.my_sp_name(‘test’,to_date(‘20170909’, ‘yyyymmdd’))
或在日期参数中使用ISO日期格式。