Питання по команді SELECT!!!
Створіть зберезувану процедуру INSERT_SALE_ITEM, за допомогою якої перевіряється, чи замовлена кількість товару є на складі. Якщо так, то від величини запасу віднімається величина замовлення і вводиться запис до таблиці Елементи, інакше викликається виключення і процедура завершується.
Пишу код
CREATE PROC INSERT_SALE_ITEM
@iSaleNumber INT,
@iPartNumber INT,
@iQuant INT
AS
DECLARE @t INT
SELECT value INTO @t
FROM dbo.tovar
WHERE id_tovar=@iPartNumber
IF @t<=@iQuant
INSERT dbo.element
( id_invoice, id_tovar, value )
VALUES ( @iSaleNumber, -- id_invoice - int
@iPartNumber, -- id_tovar - int
@iQuant -- value - smallint
)
ELSE
ROLLBACK
І в результаті отримую помилку
Msg 102, Level 15, State 1, Procedure INSERT_SALE_ITEM, Line 7
Incorrect syntax near '@t'.
Як я розумію проблема чомусь в самому присвоєні зміній @t значеня value. Я пробував писати суто кусочок коду типу
DECLARE @t INT
SELECT COUNT(value) INTO @t
FROM dbo.tovar
WHERE value>=100
Але результат не змінився
Msg 102, Level 15, State 1, Line 2
Incorrect syntax near '@t'.
Якщо це має якесь значення то повідомляю що використовую MS SQL Server 2008
Очевидно, что @t не может быть int, так как SELECT возвращает множество данных. Полагаю от вас хотят чтобы @t был либо курсором, либо таблицей.
Впринцепі "придумав" такий спосіб незнаю на скільки він правильний але покищо працює без проблем
Select @t=value
....
Здесь небольшая статья - как присваивать значения локальным переменным. И используйте пожалуйста тег [ code ][ /code ] (без пробелов) что бы форматировать код