我试图编写一个简单的存储过程。我首先要验证表中是否有任何内容;如果有TRUNCATE它,如果没有用一些数据填充它。会发生什么,它会在没有任何错误的情况下执行,但表中没有任何反应。它就像执行它之前一样.........空。
ALTER PROCEDURE [dbo].[LoadReportDataCI]
AS
If (Select Count(*) from tbl_TempTableReport)>0
BEGIN
Truncate table tbl_TempTableReport
END
Begin
INSERT INTO tbl_TempTableReport (userID, VendorID, VendorName, UnitCost, UnitCount, CostValue)
SELECT
'1234',
VendorID,
VendorName,
InvValue,
BegInvOnHand,
BegCurrentValue
From vVendorsAndInvONHand
END
如果我突出显示从INSERT开始直到END,数据将填充到表中,但否则它不起作用。任何人都有点亮?
答案 0 :(得分:1)
使用以下代码执行存储过程,我已经在AS
之后移动了第二个代码ALTER PROCEDURE [dbo].[sp_LoadReportDataCI]
AS
Begin
If (Select Count(*) from tbl_TempTableReport)>0
BEGIN
Truncate table tbl_TempTableReport
END
INSERT INTO tbl_TempTableReport (userID, VendorID, VendorName, UnitCost, UnitCount, CostValue)
SELECT
'1234',
VendorID,
VendorName,
InvValue,
BegInvOnHand,
BegCurrentValue
From vVendorsAndInvONHand
END
答案 1 :(得分:1)
在截断之前检查是否有行没有意义。截断比检查行的存在要快得多。如果没有行,它仍然可以正常运行。
ALTER PROCEDURE [dbo].[LoadReportDataCI]
AS
Truncate table tbl_TempTableReport;
INSERT INTO tbl_TempTableReport
(
userID
, VendorID
, VendorName
, UnitCost
, UnitCount
, CostValue
)
SELECT
'1234'
, VendorID
, VendorName
, InvValue
, BegInvOnHand
, BegCurrentValue
From vVendorsAndInvONHand;
答案 2 :(得分:1)
我猜,你没有执行存储过程。在运行LoadReportDataCI
脚本后,您是否执行了ALTER
?