4つのテーブルを接続するビューがあります
CREATE VIEW BookCopyInfo
AS
SELECT
bc.BookCopyID, b.BookTitle, m.FirstName || ' ' || m.LastName AS BorrowedBy,
l.expectedReturnDate, (SYSDATE - l.expectedReturnDate) AS NoOfDaysLate
FROM Book b, Member m, Lending l, BookCopy bc
WHERE b.BookID = bc.BookID AND l.MemberID = m.MemberID
AND l.BookCopyID = bc.BookCopyID
本が何日遅れたかを調べる小さな日付計算が行われています
(SYSDATE - l.expectedReturnDate)
を実行するSELECT * FROM BookCopyInfo
と、次のような行が得られます
4 | Human Computer Interaction | Alan Paul | 10-JUL-10 | -13.642292
これは正解で、実際には -13 が正解です。
DESC BookCopyInfo
戻り値
Name Null? Type
----------------------------------------- -------- ---------------
BOOKCOPYID NOT NULL NUMBER(38)
BOOKTITLE NOT NULL VARCHAR2(100)
BORROWEDBY VARCHAR2(126)
EXPECTEDRETURNDATE NOT NULL DATE
NOOFDAYSLATE NUMBER(38)
ただし、C#では
DataTable dtBookInfo = new DataTable();
da = new OracleDataAdapter("SELECT * FROM BookCopyInfo", con);
da.Fill(dtBookInfo);
da.Fill 行で例外をキャッチします
OverflowException がユーザー コードによって処理されませんでした。
算術演算でオーバーフローが発生しました。
SQLPlus では問題なく動作するのに、C# では失敗するのはなぜですか? :S