0

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: 入力文字列全体を変換する前に日付形式の画像が終了します

何か案は?

4

1 に答える 1