Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Процедура вставки с проверкой значения  [new]
erman
Member

Откуда:
Сообщений: 409
Добрый вечер!
Помогите правильно написать процедуру вставки значения с предварительной проверкой, есть ли значение в таблице. У меня возник такой вариант :
CREATE PROCEDURE InsertCar
as
declare @brand nvarchar(30)
declare @res_brand int
set @brand = 'Seat';
set @res_brand = 0;
set @res_brand = 'Select Brands.IdBrand where Brands.brandOfCar = @brand';
BEGIN
	IF(@res_brand != 0)
		INSERT INTO Brands(brandOfCar) VALUES (@brand);
END
@brand будет приходить, и нужно проверять есть ли это значение уже в таблице. В данном случае получаю ошибку :
Conversion failed when converting the varchar value 'Select Brands.IdBrand where Brands.brandOfCar = @brand' to data type int.
Почему здесь такая ошибка, ведь Brands.IdBrand у меня типа int?
Или может быть я всё не так делаю, подскажите, как правильно сделать.
12 окт 11, 22:35    [11430313]     Ответить | Цитировать Сообщить модератору
 Re: Процедура вставки с проверкой значения  [new]
Glory
Member

Откуда:
Сообщений: 104751
erman
Или может быть я всё не так делаю, подскажите, как правильно сделать.

Вы почему то думаете, что команда
set @res_brand = 'Select Brands.IdBrand where Brands.brandOfCar = @brand'
присвоит в переменную результат запроса
А команда это всего лишь пробует присвоить в переменную вашу символьную строку
12 окт 11, 22:45    [11430351]     Ответить | Цитировать Сообщить модератору
 Re: Процедура вставки с проверкой значения  [new]
iljy
Member

Откуда:
Сообщений: 8711
erman,

вы пытаетесь целочисленной переменной присвоить строку, естественно происходит облом.
12 окт 11, 22:46    [11430356]     Ответить | Цитировать Сообщить модератору
 Re: Процедура вставки с проверкой значения  [new]
erman
Member

Откуда:
Сообщений: 409
Тогда подскажите как сделать правильно.
12 окт 11, 22:51    [11430368]     Ответить | Цитировать Сообщить модератору
 Re: Процедура вставки с проверкой значения  [new]
Glory
Member

Откуда:
Сообщений: 104751
erman
Тогда подскажите как сделать правильно.

Использовать конструкцию EXISTS, например
12 окт 11, 23:00    [11430388]     Ответить | Цитировать Сообщить модератору
 Re: Процедура вставки с проверкой значения  [new]
erman
Member

Откуда:
Сообщений: 409
Glory
erman
Тогда подскажите как сделать правильно.

Использовать конструкцию EXISTS, например

Создал такую конструкцию :
INSERT INTO Brands(brandOfCar) VALUES (@brand) WHERE NOT EXISTS(SELECT IdBrand FROM Brands WHERE Brands.brandOfCar = @brand);
Возникает ошибка неправильного использования оператора WHERE. Как здесь правильно написать?
13 окт 11, 21:00    [11437502]     Ответить | Цитировать Сообщить модератору
 Re: Процедура вставки с проверкой значения  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
erman,

VALUES() => SELECT
13 окт 11, 21:27    [11437624]     Ответить | Цитировать Сообщить модератору
 Re: Процедура вставки с проверкой значения  [new]
erman
Member

Откуда:
Сообщений: 409
iap,

Исправьте, пожалуйста, как должно быть, а то я вас не понимаю...
13 окт 11, 21:56    [11437754]     Ответить | Цитировать Сообщить модератору
 Re: Процедура вставки с проверкой значения  [new]
Glory
Member

Откуда:
Сообщений: 104751
erman
Исправьте, пожалуйста, как должно быть, а то я вас не понимаю...

Используйте примеры из хелпа
14 окт 11, 09:19    [11438804]     Ответить | Цитировать Сообщить модератору
 Re: Процедура вставки с проверкой значения  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
erman
iap,

Исправьте, пожалуйста, как должно быть, а то я вас не понимаю...
Замените VALUES со скобками на слово SELECT.
Так пончтнее?
14 окт 11, 12:34    [11440187]     Ответить | Цитировать Сообщить модератору
 Re: Процедура вставки с проверкой значения  [new]
erman
Member

Откуда:
Сообщений: 409
Так понятнее, спасибо за помощь!
14 окт 11, 17:17    [11442978]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить