我有连接4台为什么这个事业在C#中ArithmeticException时的sqlplus一切ok
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
如果你用一个常量替代'(SYSDATE-l.expectedReturnDate)',那么它是否工作(在你的视图中说'0 AS NoOfDaysLate'?只是为了确保日期计算实际上导致你的问题... – 2010-06-26 09:12:04
是的。该应用程序运行正常,0 AS NoOfDaysLate:S – 2010-06-26 09:31:46