【问题标题】:SQL71501: Procedure contains an unresolved reference to an objectSQL71501:过程包含对对象的未解析引用
【发布时间】:2017-11-20 16:04:32
【问题描述】:

我们有一个名为 PrematureLoanSettlement 的表:

CREATE TABLE [dim].[PrematureLoanSettlementRequest]
(
     [PrematureLoanSettlementRequestID]             INT             NOT NULL    IDENTITY(1,1) PRIMARY KEY
    ,[PrematureLoanSettlementRequestID_Primary]     BIGINT          NOT NULL
    ,[ContractID]                                   INT             NOT NULL    
    ,[RequestDateID]                                INT             NOT NULL

    ,[Created]                                      DATETIME        NOT NULL    DEFAULT GETDATE()
    ,[Modified]                                     DATETIME        NOT NULL    DEFAULT GETDATE()
)
GO

在 ETL 过程中,我想更新一个列 ContractID:


--  Update ContractID
-------------------------------------------------------------------------

IF @DateID BETWEEN @MinDateID AND @MaxDateID
    BEGIN

        UPDATE stg.PrematureLoanSettlementRequest
        SET a.CountryId = b.ContractID
        SELECT ContractID, @SourceID, @CountryId

        FROM stg.PrematureLoanSettlementRequest a

                INNER JOIN dim.Contract b
                    ON a.ContractID = b.ContractID

        WHERE b.SourceID = @SourceID
            AND b.CountryId = @CountryId

        -- For existing
        UPDATE a
        SET a.ContractID = b.ContractID 
        FROM
            [stg].[PrematureLoanSettlementRequest] a

            JOIN [dim].[PrematureLoanSettlementRequest] b 
                ON a.[PrematureLoanSettlementRequestID_Primary] = b.[PrematureLoanSettlementRequestID_Primary]

        WHERE a.SourceID = @SourceID
            AND a.ContractID IS NULL        

        -- Others
        UPDATE [stg].[PrematureLoanSettlementRequest]
        SET ContractID = 19000101
        WHERE ContractID IS NULL

    END

返回错误:

JOIN [dim].[PrematureLoanSettlementRequest] b 
                    ON a.[PrematureLoanSettlementRequestID_Primary] = **b.[PrematureLoanSettlementRequestID_Primary]**

SQL71501:过程:[s01].[stgPrematureLoanSettlementRequest] 包含对对象的未解析引用。无论是对象 不存在或引用不明确,因为它可以引用任何 以下对象: [dim].[PrematureLoanSettlementRequest].[b]::[PrematureLoanSettlementRequestID_Primary], [dim].[PrematureLoanSettlementRequest].[PrematureLoanSettlementRequestID_Primary] 或者 [stg].[PrematureLoanSettlementRequest].[b]::[PrematureLoanSettlementRequestID_Primary]。 Staging.Database C:\Workspace\Projects\Staging.Database\SchemaObjects\Procedures\s01\stgPrematureLoanSettlementRequest.sql

我们将不胜感激。

【问题讨论】:

标签: sql sql-server visual-studio stored-procedures


【解决方案1】:

你应该问另一个问题,提供样本数据和你想做什么。我怀疑代码可以大大简化。

您当前代码中的至少一个问题是:

    UPDATE stg.PrematureLoanSettlementRequest
        SET a.CountryId = b.ContractID

ab 均未定义。

【讨论】:

  • 另外,我不认为他打算将 countryID 设置为 contractID
  • @Beth。 . .不考虑 OP 编写的代码。无论意图如何,ab 都是未定义的。
猜你喜欢
  • 1970-01-01
  • 2019-04-18
  • 2014-04-24
  • 1970-01-01
  • 2019-09-08
  • 2019-01-04
  • 2019-03-23
  • 2015-07-06
  • 2014-05-22
相关资源
最近更新 更多