2013-07-03 8 views
-6

Почему я получаю сообщение об ошибке?Должен объявить скалярную переменную в хранимой процедуре SQL Server

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

В моей хранимой процедуры?

create PROCEDURE [dbo].Vector 
    (@word Varchar, @Wight double) 
AS 
SET NOCOUNT ON; 

SELECT 
    DocId, TermWight * @Wight as "ss", word, id, 
    wordid, IDF, TFij  
FROM   TermWeight 

WHERE (word = @word) and (TermWight <> 0) 
+5

Потому что вы используете переменную, которая не была объявлена. –

+3

Нет типа данных 'double'. Когда вы исправите это, вы получите 'Обязательно объявите скалярную переменную« @word ».' –

+0

проблема в переменной @wight – AAHN

ответ

1

Здесь вы:

CREATE PROCEDURE [dbo].Vector 
(@word VARCHAR (100) , @Wight float) 
AS 
SET NOCOUNT ON; 

SELECT 
    DocId , 
    TermWight * @Wight AS 'ss' , 
    word , 
    id , 
    wordid , 
    IDF , 
    TFij 
FROM TermWeight 

WHERE (word = @word) 
AND (TermWight <> 0) 

Пара вопросов ранее. В моем примере Varchar должен иметь длину (100). Как упоминалось кем-то еще Двойным не является тип sql float - ближайший эквивалент (я считаю)

2

Вы используете @word, но это не указано нигде.

+2

Зачем это объясняет сообщение «Должно объявить скалярную переменную * @ wight *» –

+2

Нет, честно говоря, он отредактировал вопрос после того, как я отправил свой ответ! –