2017-11-09 10 views
0

私は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を実行することができます)

+0

'...( 'TEST'、date '2017-09-09')'を試してください。日付の場合、ローカル設定によらず、[universal syntax](https://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements003.htm#BABGIGCJ)です。 –

答えて

1

あなたはto_dateを使用しようとすることができます関数:

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

また、日付パラメータにISOの日付形式を使用してください。

+0

ありがとうございます。TO_DATEを追加しても問題ありません。 –

関連する問題