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

Откуда:
Сообщений: 64
пытаюсь занести данные в бд

SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[A_I_EducationOnLineStudent_Theme]
@ID_Lesson int,
@Theme_Name nvarchar(30),
@Title nvarchar(30),
@Body ntext,
@enable bit
AS
BEGIN
INSERT INTO[Education_Lesson_Subject]
([ID_Lesson]
,[Theme_num]
,[Theme_Name]
,[Title]
,[Body]
,[enable])
VALUES
(@ID_Lesson
,(SELECT MAX(Theme_num) FROM [Education_Lesson_Subject]
where [ID_Lesson]=@ID_Lesson)+1
,@Theme_Name
,@Title
,@Body
,@enable)
END
GO
но вылетает ошибка
автор
Сообщение 1046, уровень 15, состояние 1, процедура A_I_EducationOnLineStudent_Theme, строка 19
Subqueries are not allowed in this context. Only scalar expressions are allowed.


в чем причина?.........
2 сен 09, 14:11    [7608276]     Ответить | Цитировать Сообщить модератору
 Re: помогите найти ошибку  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36829
Текст ошибки пробовали переводить?
2 сен 09, 14:13    [7608288]     Ответить | Цитировать Сообщить модератору
 Re: помогите найти ошибку  [new]
--__Александр__--
Member

Откуда:
Сообщений: 2631
abra_labas,
Во в этом
VALUES
(@ID_Lesson
,(SELECT MAX(Theme_num) FROM [Education_Lesson_Subject]
where [ID_Lesson]=@ID_Lesson)+1
,@Theme_Name
,@Title
,@Body
,@enable)


Перепешите через
insert... select...
2 сен 09, 14:14    [7608300]     Ответить | Цитировать Сообщить модератору
 Re: помогите найти ошибку  [new]
TheBatya
Member

Откуда:
Сообщений: 15
abra_labas,
Так вроде же все написано... подзапрос не разрешен в данном контексте, только скалярные значения.
2 сен 09, 14:15    [7608310]     Ответить | Цитировать Сообщить модератору
 Re: помогите найти ошибку  [new]
abra_labas
Member

Откуда:
Сообщений: 64
пробовали.
Судя по тексту ошибки, виновата строчка
",(SELECT MAX(Theme_num) FROM [Education_Lesson_Subject]
where [ID_Lesson]=@ID_Lesson)+1"

но там же указывается номер стрки - 19, а это строка другая........
2 сен 09, 14:16    [7608324]     Ответить | Цитировать Сообщить модератору
 Re: помогите найти ошибку  [new]
abra_labas
Member

Откуда:
Сообщений: 64
--__Александр__--
прошу прощения за наглость, но ..... не могли бы вы написать как это должно выглядеть?.....
2 сен 09, 14:19    [7608349]     Ответить | Цитировать Сообщить модератору
 Re: помогите найти ошибку  [new]
--__Александр__--
Member

Откуда:
Сообщений: 2631
Вот тут много примеров.
http://msdn.microsoft.com/ru-ru/library/ms174335(SQL.90).aspx
2 сен 09, 14:44    [7608538]     Ответить | Цитировать Сообщить модератору
 Re: помогите найти ошибку  [new]
Рострига Артур
Member

Откуда:
Сообщений: 200
попробуй тау
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[A_I_EducationOnLineStudent_Theme]
@ID_Lesson int,
@them_num int,
@Theme_Name nvarchar(30),
@Title nvarchar(30),
@Body ntext,
@enable bit
AS
BEGIN
set @them_num=((SELECT MAX(Theme_num) FROM [Education_Lesson_Subject] where [ID_Lesson]=@ID_Lesson)+1)
INSERT INTO[Education_Lesson_Subject]
([ID_Lesson]
,[Theme_num]
,[Theme_Name]
,[Title]
,[Body]
,[enable])
VALUES
(@ID_Lesson
,@them_num
,@Theme_Name
,@Title
,@Body
,@enable)
END
GO
2 сен 09, 14:57    [7608632]     Ответить | Цитировать Сообщить модератору
 Re: помогите найти ошибку  [new]
abra_labas
Member

Откуда:
Сообщений: 64
Рострига Артур
большое спасибо. Сработало :о)
2 сен 09, 15:54    [7609038]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить