DATE を入力として使用する単純なストアド プロシージャがあります。
CREATE OR REPLACE PROCEDURE delete_time(myTime DATE) IS
BEGIN
DELETE FROM mytable WHERE time = myTime;
END;
/
これは、関数のインポートを使用して EDMX に追加されました。マッピングされた型は、SSDL 側の Date と CSDL の DateTime です。
問題は、DateTime を使用して .NET からプロシージャを実行すると、途中で時間と分が失われることです。
DateTime dt = new DateTime(2013, 4, 3, 12, 15, 00);
var timeParam = new ObjectParameter("myTime", dt) :
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("DeleteTime", timeParam);
これにより、ストアド プロシージャが実行されますが、TIME = 03-APR-2013 12:15:00 ではなく 03-APR-2013 00:00:00 の行が削除されます。
Oracle クライアントにバグはありますか (私は 11.2.0.3.20 を使用しています)? または、上記で何か間違ったことをしていますか?
また、プロシージャの入力タイプとして TIMESTAMP を使用しようとしましたが、関数を呼び出すときに次のエラーが発生します: ORA-01830: 入力文字列全体を変換する前に日付形式の画像が終了します
何か案は?