2012-07-03 2 views
2

У меня есть три отдельные переменные таблицы в моей функции, 1 из них не дает мне никаких ошибок, два других: Я ничего не нашел по-другому. Синтаксис между ними, но, возможно, мне нужно больше кофеина.Должен объявить скаляр

ошибка я получаю это

Необходимо объявить скалярную переменную "@DispoTable".

DECLARE @CIDdisp INT 

DECLARE @DispoTable TABLE 
(
    CaseID INT, 
    Code INT, 
    Description VARCHAR(150) 
) 
--Gather Data From filter 
SELECT @CIDdisp = CaseID, @Code = Code, @Description = Description 
FROM fnRecidFilter3(@CaseID,01,01) 
-- Insert into Temp table 
INSERT INTO @DispoTable (CaseID, Code, Description) 
VALUES (@CIDdisp, @Code, @Description) 
-- Merge the Temp Table with RecidReport Table 
INSERT INTO RecidReport(Code, Description) 
SELECT Code, Description 
FROM @DispoTable 
WHERE (@DispoTable.CaseID) = CaseID 

есть то, что мне не хватает?

+0

где у вас есть ошибка – phadaphunk

+0

Можете ли вы опубликовать рабочую функцию тоже – phadaphunk

ответ

4

Вы не можете сказать:

WHERE (@DispoTable.CaseID) = CaseID 

Вместо этого вы должны использовать псевдоним:

FROM @DispoTable AS d 
WHERE d.CaseID = CaseID 

Но этот пункт не имеет смысла в любом случае. Вы имели в виду использовать переменную здесь? Возможно:

FROM @DispoTable AS d 
WHERE d.CaseID = @CIDdisp 

?

+0

У меня есть основная таблица, в которую я помещаю данные. и я хочу, чтобы данные были помещены в эту таблицу определенным образом, чтобы впоследствии я мог получить посторонние данные. может быть, я уже думал о том, где говорится. – Malachi

+0

Я не понимаю, что даже должно делать предложение WHERE. Но причина, по которой вы получаете сообщение об ошибке, состоит в том, что вы не можете ссылаться на переменную таблицы по имени, отличному от 'FROM' - в другом месте вам нужно использовать псевдоним. Замечание о том, имеет ли смысл предложение WHERE, является периферийным. –

+0

причина, по которой Первый не выбрасывал ту же ошибку, был потому, что я вырезал и вставил из хранимой процедуры и использовал там временную таблицу и забыл изменить «#» на «@» в инструкции where. в противном случае Alias ​​исправил его, и я думаю, что это как-то связано с() в инструкции where, а также – Malachi

Смежные вопросы