私はOracleストアドプロシージャを呼び出すシェルスクリプトを持っています。 SPは、2つのパラメータを持っています - 最初は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;
/
のですが、私は次のコマンドを使用してプロシージャを実行しようとしている:
echo "EXECUTE MY_SCHEMA.MY_SP_NAME('TEST', '20170909') " | $ORACLE_HOME/bin/sqlplus $ORAUSER/$ORAPASS
問題は、スクリプトの実行時に次のエラーが発生することです。ORA-01861:リテラルが書式文字列と一致しません。私の推測では、日付パラメータに渡している '20170809'の値に問題がありますが、これを解決する方法がわかりません。どんな助けもありがとうございます。
(PS:ORACLE_HOME/USER/PASS環境変数がすべて正しく設定されていると、Oracleデータベースへの接続に問題がないので、私は成功したスクリプトからSQLPLUSを実行することができます)
'...( 'TEST'、date '2017-09-09')'を試してください。日付の場合、ローカル設定によらず、[universal syntax](https://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements003.htm#BABGIGCJ)です。 –