【问题标题】:Shell Script & Stored Procedure - Literal Format ErrorShell 脚本和存储过程 - 文字格式错误
【发布时间】:2017-11-09 20:16:10
【问题描述】:

我有一个调用 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:文字与格式字符串不匹配。我的猜测是我传递给 date 参数的“20170809”值存在问题,但我不确定如何解决这个问题。任何帮助表示赞赏。

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

【问题讨论】:

  • 请尝试... ('TEST', date '2017-09-09')。日期为universal syntax,与本地设置无关。

标签: oracle shell stored-procedures


【解决方案1】:

你可以尝试使用to_date函数:

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

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

【讨论】:

    猜你喜欢
    • 2012-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 2015-04-23
    • 2022-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多