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

Откуда:
Сообщений: 7
Здравствуйте форумчане, у меня вопрос
Имеется база в ней есть таблица Клиент пишу процедуру на добавление нового клиента

create procedure new_klient(@id_kl int, @id_t int, @FIO nvarchar(50), @Adress nvarchar(50), @Phone nvarchar(50), @sost_sch nvarchar(50))
as
Begin
insert into Klient values ((select ISNULL(MAX(id_kl)+1,1) from Klient),
@id_kl, @id_t, @FIO, @Adress, @Phone, @sost_sch)
end

Но почему то выводит ошибку
Msg 1046, Level 15, State 1, Procedure new_klient, Line 5
Вложенные запросы в данном контексте не разрешены. Допускаются только скалярные выражения

Если кто знает в чем ошибка, помогите пожалуйста. Заранее спасибо
19 май 12, 20:56    [12582594]     Ответить | Цитировать Сообщить модератору
 Re: Процедура Добавления нового клиента  [new]
Anton_SQL_RU
Member

Откуда:
Сообщений: 20
Посмотрите здесь
19 май 12, 21:40    [12582739]     Ответить | Цитировать Сообщить модератору
 Re: Процедура Добавления нового клиента  [new]
SergSniper
Member

Откуда:
Сообщений: 7
Мне просто для делфи она нужна, чтобы я вводил уже свои данные а не заранее написанные
19 май 12, 21:56    [12582809]     Ответить | Цитировать Сообщить модератору
 Re: Процедура Добавления нового клиента  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
SergSniper
select ISNULL(MAX(id_kl)+1,1) from Klient
Откройте для себя identity.
19 май 12, 23:36    [12583282]     Ответить | Цитировать Сообщить модератору
 Re: Процедура Добавления нового клиента  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
SergSniper
create procedure new_klient(@id_kl int, @id_t int, @FIO nvarchar(50),  @Adress nvarchar(50), @Phone nvarchar(50), @sost_sch nvarchar(50))
as 
	Begin 
	insert into Klient values ((select ISNULL(MAX(id_kl)+1,1) from Klient),
@id_kl, @id_t, @FIO, @Adress, @Phone, @sost_sch)
end 
Msg 1046, Level 15, State 1, Procedure new_klient, Line 5
Вложенные запросы в данном контексте не разрешены. Допускаются только скалярные выражения
-- ALTER TABLE dbo.Klient DROP CONSTRAINT [PK_Klient]
ALTER TABLE dbo.Klient ALTER COLUMN [id_kl] Int NOT NULL IDENTITY -- Client, а не Klient
ALTER TABLE dbo.Klient ADD CONSTRAINT [PK_Klient] PRIMARY KEY
CREATE PROCEDURE [dbo].[spClientAdd]
	 @ID		Int	OUT
	,@IDT		Int
	,@FIO		NVarChar(50)
	,@Adress	NVarChar(50)
	,@Phone		NVarChar(50)
	,@SostSch	NVarChar(50)
AS BEGIN
	SET NOCOUNT ON;

	INSERT	dbo.Klient	( ID_T, FIO, Address, Phone sost_sch)
	VALUES			(@id_t,@FIO, @Adress,@Phone,@SostSch)

	SET @ID = Scope_Identity()
END
GO
20 май 12, 00:32    [12583508]     Ответить | Цитировать Сообщить модератору
 Re: Процедура Добавления нового клиента  [new]
SergSniper
Member

Откуда:
Сообщений: 7
Спасибо за ответы вот только выдает ошибки
Msg 156, Level 15, State 1, Line 2
Неправильный синтаксис около ключевого слова "IDENTITY".
Msg 111, Level 15, State 1, Line 14
CREATE/ALTER PROCEDURE должна быть первой инструкцией в пакетном запросе.
20 май 12, 10:58    [12583975]     Ответить | Цитировать Сообщить модератору
 Re: Процедура Добавления нового клиента  [new]
SergSniper
Member

Откуда:
Сообщений: 7
С этим уже разобрался вот еще 1 вопрос остался
Я обращаюсь к базе через делфи, как сделать чтобы когда я добавлял нового клиента мне не приходилось писать ID, а был счетчик который каждый раз при добавлении прибавлял ID+1
20 май 12, 14:00    [12584295]     Ответить | Цитировать Сообщить модератору
 Re: Процедура Добавления нового клиента  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
SergSniper
С этим уже разобрался вот еще 1 вопрос остался
Я обращаюсь к базе через делфи, как сделать чтобы когда я добавлял нового клиента мне не приходилось писать ID, а был счетчик который каждый раз при добавлении прибавлял ID+1
IDENTITY - это что, по-вашему?
20 май 12, 14:11    [12584325]     Ответить | Цитировать Сообщить модератору
 Re: Процедура Добавления нового клиента  [new]
SergSniper
Member

Откуда:
Сообщений: 7
со свойством IDENTITY допустимы так называемые "дыры",
но у меня почему то не работает и пишит невозможно вставить повтороящийся ключ тоесть не прибавляет Id+1 и выдает крит хотя сделал все как советовали выше
20 май 12, 14:46    [12584368]     Ответить | Цитировать Сообщить модератору
 Re: Процедура Добавления нового клиента  [new]
step_ks
Member

Откуда:
Сообщений: 936
SergSniper
со свойством IDENTITY допустимы так называемые "дыры",
Соседнюю тему начитались?
SergSniper
но у меня почему то не работает и пишит невозможно вставить повтороящийся ключ тоесть не прибавляет Id+1 и выдает крит хотя сделал все как советовали выше
небось, в таблице на момент вставки уже есть записи с таким значением от предыдущих экспериментов.
20 май 12, 14:56    [12584386]     Ответить | Цитировать Сообщить модератору
 Re: Процедура Добавления нового клиента  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
SergSniper
со свойством IDENTITY допустимы так называемые "дыры"
И...?
20 май 12, 14:58    [12584391]     Ответить | Цитировать Сообщить модератору
 Re: Процедура Добавления нового клиента  [new]
SergSniper
Member

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

тоже так думал, потом удалил все данные и при 1 записи не указывая ID всё норм записывает а вот 2 уже не хочет выдет крит
20 май 12, 15:52    [12584496]     Ответить | Цитировать Сообщить модератору
 Re: Процедура Добавления нового клиента  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
SergSniper
step_ks, выдет крит
Кто выдает? Что выдает? Это угадать надо, да?
20 май 12, 15:54    [12584506]     Ответить | Цитировать Сообщить модератору
 Re: Процедура Добавления нового клиента  [new]
SergSniper
Member

Откуда:
Сообщений: 7
Гавриленко Сергей Алексеевич,

в делфи через форму я добавляю нового клиента, если таблица Клиент в БД пустая, то когда я нового добавляю все отлично, а если хочу еще одного добавить, то выдает ошибку, что такой id уже есть в базе, то есть он не прибавляет +1 и выходит крит
20 май 12, 16:13    [12584554]     Ответить | Цитировать Сообщить модератору
 Re: Процедура Добавления нового клиента  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
SergSniper
Гавриленко Сергей Алексеевич,

в делфи через форму я добавляю нового клиента, если таблица Клиент в БД пустая, то когда я нового добавляю все отлично, а если хочу еще одного добавить, то выдает ошибку, что такой id уже есть в базе, то есть он не прибавляет +1 и выходит крит
В 17й строке ошибка.
20 май 12, 16:18    [12584572]     Ответить | Цитировать Сообщить модератору
 Re: Процедура Добавления нового клиента  [new]
step_ks
Member

Откуда:
Сообщений: 936
SergSniper
Гавриленко Сергей Алексеевич,

в делфи через форму я добавляю нового клиента, если таблица Клиент в БД пустая, то когда я нового добавляю все отлично, а если хочу еще одного добавить, то выдает ошибку, что такой id уже есть в базе, то есть он не прибавляет +1 и выходит крит

смотрите профайлером, что там ваш делфи отправляет на сервер
20 май 12, 18:54    [12584976]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить