忙着用SQL编写我的第一个存储过程,遇到了一个我无法解决的问题。
存储过程必须截断一个表并在其中插入新值。截断进行得很好,但插入项却不能。当我在过程外运行查询时,它将返回预期结果。
我手动开始该过程。
过程中的数据类型与目标表中的数据类型匹配
在过程外运行查询将返回预期结果
此代码:
test.0.4.ppm
预期结果是:(来自查询)
DateUpdated 119183,表名Fact_Account_Ledger
DateUpdated 0,表名Dim_Company
过程结果 没有行
**查询结果* 受影响的2行
编辑:没有错误消息,返回值为0
答案 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