存储过程没有在SQL SERVER中执行?

时间:2016-01-21 16:41:25

标签: sql-server stored-procedures

我试图编写一个简单的存储过程。我首先要验证表中是否有任何内容;如果有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,数据将填充到表中,但否则它不起作用。任何人都有点亮?

3 个答案:

答案 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