2015-07-06 2 views
1

Мне нужно создать хранимую процедуру SQL, которая будет принимать два входных параметра (идентификатор из таблицы «пользователи» и идентификатор из таблицы «sales»), а затем, если значение столбцов «купоны» (таблица ' пользователи) больше 0, это увеличивает значение для 1 в столбце «numOfSales» (таблица «sales») и уменьшает значение для 1 в столбцах «купоны». Я попытался это:Процедура Sql с двумя входными параметрами

CREATE PROCEDURE usp_makesale 
@id_sales int NOT NULL, 
@id_users int NOT NULL 
AS 
BEGIN 
SET NOCOUNT ON; 
SELECT users.coupons, sales.numOfSales 
IF (coupons > 0) 
    BEGIN 
    SET coupons - 1; 
    SET numOfSales + 1; 
    END 

Как объявить эти переменные правильно?

+2

Выньте часть «NOT NULL» в декларации параметров. –

+0

Помог ли ответ? – Wibbler

ответ

2

Вы должны объявить переменные следующим образом:

DECLARE @coupons AS INT 
SELECT @coupons = coupons FROM users WHERE users.id = @id_users 

DECLARE @numOfSales AS INT 
SELECT @numOfSales = numOfSales FROM sales WHERE sales.id = @id_sales 

Однако вы не правильно написал заявление обновления для обновления значений в столбцах. Вам необходимо что-то вроде:

UPDATE users 
SET coupons = coupons - 1 
WHERE users.id = @id_users 

UPDATE sales 
SET numOfSales = numOfSales + 1 
WHERE sales .id = @id_sales 
+0

Когда я пытаюсь разобрать, он дает ошибку «Неправильный синтаксис рядом с ключевым словом« SELECT ». ' Выбор после «=». –

+0

Я удалил неправильный синтаксис из настройки переменной, см. Мой отредактированный ответ. Чтобы установить переменную из таблицы, правильным синтаксисом является 'SELECT @ [variablename] = [field] FROM [table]' – Wibbler

+1

Большое спасибо! Он работает сейчас :) –

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