Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > The multi-part identifier could not be bound


Автор: ДобренькийПапаша 6.12.2009, 13:02
Код

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[GetTeacherSypherByFullName]
@fullName varchar(50)
AS
BEGIN
    SET NOCOUNT ON;

IF(Teachers.MiddleName!=null)
    BEGIN
        SELECT teacherSypher    
        FROM Teachers

        WHERE Surname + ' ' + FirstName + ' ' + MiddleName = @fullName;
    END
ELSE
    BEGIN
        SELECT teacherSypher    
        FROM Teachers
        WHERE Surname + ' ' + FirstName = @fullName;
    END
END


Ошибка: The multi-part identifier could not be bound
Ошибка в этой строке IF(Teachers.MiddleName!=null), я ссылаюсь видимо на то чего нет? А как сделать, всё-таки, нужную мне проверку?

Автор: Simpliest 6.12.2009, 14:00
А что должна делать по твоей задумке эта процедура?

Добавлено через 38 секунд
Ты не можешь напрямую вне запроса обратится к полю таблицы. Ты должен выбрать значение и сохранить в переменную

Добавлено через 2 минуты и 36 секунд
Все. я понял

в условии WHERE поставь 
Код

WHERE 
Surname + ' ' + FirstName + ' ' + MiddleName = @fullName 
OR
Surname + ' ' + FirstName = @fullName;


а if не нужен

Автор: boevik 6.12.2009, 14:05
Можно решить проблему следующим образом:

Код

ALTER PROCEDURE [dbo].[GetTeacherSypherByFullName]
@fullName varchar(50)
AS
BEGIN
    SET NOCOUNT ON;

        SELECT teacherSypher    
        FROM Teachers
        WHERE Surname + ' ' + FirstName + ' ' + isnull(MiddleName, '') = @fullName;
END

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)