存储过程没有结果,不会截断工作,但什么也不插入

时间:2019-07-02 10:18:02

标签: sql-server stored-procedures union sql-insert common-table-expression

忙着用SQL编写我的第一个存储过程,遇到了一个我无法解决的问题。

存储过程必须截断一个表并在其中插入新值。截断进行得很好,但插入项却不能。当我在过程外运行查询时,它将返回预期结果。

我手动开始该过程。

  • 过程中的数据类型与目标表中的数据类型匹配

  • 在过程外运行查询将返回预期结果

此代码:

test.0.4.ppm

预期结果是:(来自查询)

  • DateUpdated 119183,表名Fact_Account_Ledger

  • DateUpdated 0,表名Dim_Company

过程结果 没有行

**查询结果* 受影响的2行

编辑:没有错误消息,返回值为0

2 个答案:

答案 0 :(得分:0)

您的存储过程将行插入Max_UPMJ中。但不要选择此行。 如果要查看此行,则应附加代码select * from Max_UPMJ

答案 1 :(得分:0)

自己找到解决方案:

1)通过将(@TableName nvarchar (50), @Max_DateUpdated numeric(6,0))放在create procedure之后,我要求不存在的变量;

2)在此过程中似乎不需要参数或变量。

以下代码有效:

Create Procedure Usp_Max_DateUpdated

as
Begin

set nocount on;

truncate table Max_UPMJ;

With CTE_Fact_Account_Ledger as(
select 
        cast(isnull(max([DateUpdated (GLUPMJ)]),0) as numeric(6,0)) as Max_DateUpdated
    ,   'Fact_Account_Ledger' as TableName 
from DWH_Backroom.dbo.Fact_Account_Ledger
)

, CTE_Dim_Company as(
select 
        cast(isnull(max([DateUpdated (CCUPMJ)]) ,0) as numeric(6,0)) as Max_DateUpdated
    ,   'Dim_Company' as TableName
from DWH_Backroom.dbo.Dim_Company
)

insert into Max_UPMJ (DateUpdated, TableName)

select 
        Max_DateUpdated
    ,   TableName 
From CTE_Fact_Account_Ledger CFAL

union 

select 
        Max_DateUpdated
    ,   TableName
From CTE_Dim_Company
;
End