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

Откуда: СПБ- Авангард ADSL
Сообщений: 6
Имеется процедура:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[MakeZakazNumber]
	@NumberID int,
	@ZakazID int,
	@Time datetime,
	@ClientID int,
	@ClientLogin nvarchar(MAX)
AS
BEGIN
SET @ClientID=
	(
	SELECT     ID
	FROM         Клиенты
	WHERE     (Логин = @ClientLogin)
	)
SET @ZakazID=(SELECT MAX(ID) FROM [Заказы номеров])+1
INSERT INTO [Заказы номеров](ID,[ID клиента],[ID номера],[Дата заказа])
VALUES(@ZakazID,@ClientID,@NumberID,@Time)
END
Значения параметрам @NumberID, @Time и @ClientLogin задаются в asp-форме. В результате в таблицу [Заказы номеров] добавляются 2 строки с ID соответственно ID(MAX)+1 и ID(MAX)+2, а остальные столбцы- NULL. Помогите найти ошибку.
27 май 09, 17:03    [7236091]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
awskorp
Member

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

а @ClientLogin точно не Null приходит с asp?)
или для @ClientLogin строк нет

профайлером запрос отловите
27 май 09, 17:12    [7236169]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
LanceSPB
Помогите найти ошибку.
Я считаю что ошибка в модели БД, которая позволяет вставить в таблицу заказы с неизвестными ID клиента и номера, а также неизвестной датой/временем

Еще я считаю, что ошибка в методике генерации ID заказа, явно не рассчитанной на одновременную работу с БД нескольких пользователей
27 май 09, 17:16    [7236204]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
LanceSPB
Member

Откуда: СПБ- Авангард ADSL
Сообщений: 6
Паганель
неизвестными ID клиента и номера, а также неизвестной датой/временем

Почему неизвестными? Для номеров и клиентов свои таблицы. Что значит неизвестной датой/временем?
Паганель
в методике генерации ID заказа, явно не рассчитанной на одновременную работу с БД нескольких пользователей

Это как?
27 май 09, 17:25    [7236266]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
LanceSPB
Почему неизвестными?
LanceSPB
а остальные столбцы- NULL
27 май 09, 17:31    [7236304]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
LanceSPB
Паганель
в методике генерации ID заказа, явно не рассчитанной на одновременную работу с БД нескольких пользователей

Это как?
А Вы сами расскажите
- почему @ZakazID является входным параметром процедуры
- зачем берется максимум ID из таблицы заказов и чему будет равен максимум на пустой таблице
- что будет если с БД работают много пользователей
- и самое главное, чем identity не угодил
27 май 09, 17:37    [7236347]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
LanceSPB
Member

Откуда: СПБ- Авангард ADSL
Сообщений: 6
Паганель
почему @ZakazID является входным параметром процедуры

А как тогда?
Паганель
зачем берется максимум ID из таблицы заказов и чему будет равен максимум на пустой таблице

Таблица изначально не пустая.
Паганель
что будет если с БД работают много пользователей

Не будут. БД чисто тренировочная.
Паганель
и самое главное, чем identity не угодил

А что это?
27 май 09, 17:59    [7236488]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
LanceSPB
А что это?
IDENTITY (свойство) (Transact-SQL)
27 май 09, 18:02    [7236501]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
LanceSPB
А как тогда?
DECLARE @local_variable (Transact-SQL)
но это скорее для для @ClientID
27 май 09, 18:05    [7236513]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить