添加新列后,SQL Server中的列名错误无效

时间:2017-09-28 09:44:29

标签: sql sql-server

首先,解决方案工作正常,按照我们的项目经理要求,我在表格中添加了两列。在那之后插入,更新存储过程无法正常显示"无效的列名称" (它提到新插入的两列名称)。我认为一些细节是暂时存储的,但我不知道如何找到并解决它。

我试过这样的事情:

  • 删除所有约束并尝试运行存储过程,但没有用

  • 刚刚删除了新添加的两列,它工作正常。

  • 尝试通过Alter查询

  • 添加列

我的存储过程是

ALTER PROCEDURE [Page].[SP_INSERT_EXPERIENCEDETAILS]
    (@EXPERIENCEDETAILS [PAGE].[EXPERIENCEDETAILS] READONLY)
AS  --drop  PROCEDURE [Page].[SP_INSERT_EXPERIENCEDETAILS]
BEGIN
    DECLARE @TEMPTABLE AS TABLE
                           (
                              ID INT,
                              [ACTION] VARCHAR(50)
                           )

    MERGE INTO [PAGE].[EXPERIENCEDETAILS] AS TARGET
    USING (SELECT 
               ID, Description, ISCurrent, COMPANYID,
               Designationid, locationid, FROMDAY, FromMonth, FromYear,
               TODAY, TOMONTH, Toyear 
           FROM 
               @EXPERIENCEDETAILS) AS SOURCE ON TARGET.ID = SOURCE.ID 

    WHEN MATCHED THEN
       UPDATE
           SET TARGET.[DESCRIPTION] = SOURCE.[DESCRIPTION],
               TARGET.ISCURRENT = SOURCE.ISCURRENT,
               TARGET.COMPANYID = SOURCE.COMPANYID,
               TARGET.DESIGNATIONID = SOURCE.DESIGNATIONID,
               TARGET.LOCATIONID = SOURCE.LOCATIONID,
               TARGET.FROMDAY = SOURCE.FROMDAY,
               TARGET.FROMMONTH = SOURCE.FROMMONTH,
               TARGET.FROMYEAR = SOURCE.FROMYEAR,
               TARGET.TODAY = SOURCE.TODAY,
               TARGET.TOMONTH = SOURCE.TOMONTH,
               TARGET.TOYEAR = SOURCE.TOYEAR

    WHEN NOT MATCHED THEN
       INSERT 
         VALUES (SOURCE.MEMBERID, SOURCE.PAGEID, SOURCE.COMPANYID,
                 SOURCE.DESIGNATIONID, SOURCE.LOCATIONID, 
                 SOURCE.FROMDAY, SOURCE.FROMMONTH, SOURCE.FROMYEAR,
                 SOURCE.TODAY, SOURCE.TOMONTH, SOURCE.TOYEAR,
                 SOURCE.[DESCRIPTION], SOURCE.[ISCURRENT], 
                 SOURCE.ENTRYDATE)

    OUTPUT INSERTED.ID, $ACTION INTO @TEMPTABLE;

    SELECT ID FROM @TEMPTABLE
END

以下行显示错误

  1. TARGET.FROMDAY = SOURCE.FROMDAY
  2. TARGET.TODAY = SOURCE.TODAY
  3. SOURCE.FROMDAY
  4. SOURCE.TODAY

1 个答案:

答案 0 :(得分:0)

您还应该将SP中使用的表格类型[PAGE].[EXPERIENCEDETAILS]中的列添加为TVP类型。