- SQL code
CREATE PROC P3 (@Acc_No VARCHAR(20), @Acc_Date DATETIME )ASINSERT INTO T2(Acc_No,Acc_Date,Today_Money,Yesterday_Money)SELECT B.Acc_No,A.Acc_Date , (B.Today_Money+ISNULL(A.Mo,0)) As Today_Money,(B.Today_Money) AS yesterday_MoneyFROM(SELECT Acc_No, Acc_Date,SUM(In_Money-Out_Money) AS MoFROM T1 WHERE Acc_Date >= DATEADD(DD,-1,@Acc_Date) AND Acc_Date<@Acc_Date and [email protected]_No GROUP BY Acc_No,Acc_Date) A RIGHT OUTER JOIN(SELECT Acc_No,Acc_Date, Today_MoneyFROM T2WHERE Acc_Date=DATEADD(DD,-1,@Acc_Date) and [email protected]_No) B ON A.Acc_No=B.Acc_NoGOexec p3 'A0001','2012/6/17' -- 执行成功;但不能插入数据
====================================
- SQL code
CREATE PROC p6 (@Acc_No varchar(20), @Acc_Date datetime )ASINSERT INTO T2 (Acc_No,Acc_Date,Today_Money,Yesterday_Money)SELECT Acc_No, Acc_Date, (SELECT SUM(isnull(In_Money, 0) - isnull(Out_Money, 0)) FROM T1 b WHERE [email protected]_No AND [email protected]_Date and b.Acc_Date <= a.Acc_Date) AS Today_Money, ISNULL ((SELECT SUM(isnull(In_Money, 0) - isnull(Out_Money, 0)) FROM T1 b WHERE [email protected]_No AND [email protected]_Date and b.Acc_Date < a.Acc_Date), 0) AS Yesterday_MoneyFROM Db_Accbook aGROUP BY Acc_No, Acc_Dateexec p6 'A0001','2012/6/17' --提示無法插入 NULL 值到資料行 'Today_Money',資料--表 'SysAcc.dbo.T2; --資料行不得有 Null。INSERT 已經失敗。--陳述式已經結束。
请大侠帮我看看 哪里有问题
------解决方案--------------------
- SQL code
CREATE PROC p6 (@Acc_No varchar(20), @Acc_Date datetime )ASINSERT INTO T2 (Acc_No,Acc_Date,Today_Money,Yesterday_Money)SELECT Acc_No, Acc_Date, ISNULL((SELECT SUM(isnull(In_Money, 0) - isnull(Out_Money, 0)) FROM T1 b WHERE [email protected]_No AND [email protected]_Date and b.Acc_Date <= a.Acc_Date),0) AS Today_Money, ISNULL ((SELECT SUM(isnull(In_Money, 0) - isnull(Out_Money, 0)) FROM T1 b WHERE [email protected]_No AND [email protected]_Date and b.Acc_Date < a.Acc_Date), 0) AS Yesterday_MoneyFROM Db_Accbook aGROUP BY Acc_No, Acc_Date-- exec p6 'A0001','2012/6/17'
------解决方案--------------------
1、第一个存储过程p3,把变量带进去,看看select出的结果集是否为空。
2、第二个存储过程p6,看看t2表Today_Money的设计是不是不允许为NULL。