【问题标题】:The multi-part identifier could not be bound again多部分标识符无法再次绑定
【发布时间】:2013-08-01 08:54:47
【问题描述】:

我正在尝试创建这样的存储过程,

CREATE PROCEDURE [dbo].[SP_Name]
(
    @ID varchar(50),
    @URL varchar(256)
)
AS
    SELECT DISTINCT 
       Table1.CID, Table2.Name, Table2.aID, Table2.bID,
       Table3.SchemeName, Table2.cURL
    FROM Table4
    INNER JOIN Table5 ON Table5.eID = Table1.eID
    INNER JOIN Table2 ON Table2.ID = Table1.CID
    INNER JOIN [Table3] ON Table3.aID = Table2.aID AND Table3.bID = Table2.bID
    WHERE 
        Table5.ID = @ID 
        AND Table2.cURL LIKE '%' + @URL + '%'

但我收到此错误:

消息 4104,级别 16,状态 1,过程 SP_Name,第 7 行
无法绑定多部分标识符“Table1.eID”。
消息 4104,级别 16,状态 1,过程 SP_Name,第 7 行
无法绑定多部分标识符“Table1.cID”。
消息 4104,级别 16,状态 1,过程 SP_Name,第 7 行
无法绑定多部分标识符“Table1.cID”。

即使语法是正确的。

【问题讨论】:

    标签: sql sql-server-2000


    【解决方案1】:

    你必须用Table1添加内连接

    SELECT DISTINCT Table1.CID, 
    Table2.Name, Table2.aID, Table2.bID,
    Table3.SchemeName, Table2.cURL
    
    FROM Table4
    INNER JOIN Table1 ON ....
    INNER JOIN Table5 ON Table5.eID = Table1.eID
    INNER JOIN Table2 ON Table2.ID = Table1.CID
    INNER JOIN [Table3] ON Table3.aID = Table2.aID AND Table3.bID = Table2.bID
    
    WHERE Table5.ID=@ID AND Table2.cURL LIKE '%' + @URL + '%'
    

    或使用Table1 代替Table4

    SELECT DISTINCT Table1.CID, 
    Table2.Name, Table2.aID, Table2.bID,
    Table3.SchemeName, Table2.cURL
    
    FROM Table1
    INNER JOIN Table1 ON ....
    INNER JOIN Table5 ON Table5.eID = Table1.eID
    INNER JOIN Table2 ON Table2.ID = Table1.CID
    INNER JOIN [Table3] ON Table3.aID = Table2.aID AND Table3.bID = Table2.bID
    WHERE Table5.ID=@ID AND Table2.cURL LIKE '%' + @URL + '%'
    

    【讨论】:

    • 谢谢,但我正在尝试基于一个已经存在的过程创建一个过程,不知道为什么一个已经存在但这个不执行
    猜你喜欢
    • 2011-11-10
    • 2010-11-02
    • 2023-03-21
    相关资源
    最近更新 更多