powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Хранимые процедуры
8 сообщений из 8, страница 1 из 1
Хранимые процедуры
    #39959952
RumaNO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Написать хранимую процедуру, осуществляющую прописку заданного жителя острова по указанному адресу. При прописке необходимо проверить, достаточно ли площади для прописки, предполагая, что на каждого проживающего должно приходиться не менее 20 м2.

Написал вот процедуру,как сделать условие 20м2
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
ALTER PROC AddHouse
(
   @Id_People int,
   @Id_House int,
   @Start date
)
AS
BEGIN
   INSERT INTO Occupant(Id_People,Id_House,[Start]) VALUES(@Id_People,@Id_House,@Start)
   WHERE House.Area/   --вот тут

   SELECT *
   FROM Occupant 
END
...
Рейтинг: 0 / 0
Хранимые процедуры
    #39959961
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
INSERT WHERE это у вас что то новое в синтаксисе. Читайте доки по команде INSERT

RumaNO
При прописке необходимо проверить

и? Наверное что то сделать...
...
Рейтинг: 0 / 0
Хранимые процедуры
    #39959966
RumaNO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PizzaPizza, и как проверить?
...
Рейтинг: 0 / 0
Хранимые процедуры
    #39959973
RumaNO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал еще вот так, но все равно ошибку выдает: Статистическое выражение не может использоваться в предложении WHERE, если оно не содержится во вложенном запросе предложения HAVING или в списке выбора
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
ALTER PROC AddHouse
(
   @Id_People int,
   @Id_House int,
   @Start date
)
AS
BEGIN

   INSERT INTO Occupant(Id_People,Id_House,[Start]) VALUES(@Id_People,@Id_House,@Start)
   SELECT O.Id_People,O.Id_House,Start FROM Occupant AS O,House AS H
   WHERE H.Area/(SELECT COUNT(Id_People) 
   WHERE Id_House = @Id_House) > 20;

   SELECT *
   FROM Occupant;
END
...
Рейтинг: 0 / 0
Хранимые процедуры
    #39959976
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RumaNO
все равно ошибку выдает:
Секретную?

А вот тут логическая ошибка:
RumaNO
Код: sql
1.
FROM Occupant AS O,House AS H

Вы не связали таблицы Occupant и House
...
Рейтинг: 0 / 0
Хранимые процедуры
    #39959977
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RumaNO
Сделал еще вот так, но все равно ошибку выдает:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
ALTER PROC AddHouse
(
   @Id_People int,
   @Id_House int,
   @Start date
)
AS
BEGIN

   INSERT INTO Occupant(Id_People,Id_House,[Start]) VALUES(@Id_People,@Id_House,@Start)
   SELECT O.Id_People,O.Id_House,Start FROM Occupant AS O,House AS H
   WHERE H.Area/(SELECT COUNT(Id_People) 
   WHERE Id_House = @Id_House) > 20;

   SELECT *
   FROM Occupant;
END



Вы синтаксис insert пытаетесь угадать перебором?


https://docs.microsoft.com/ru-ru/sql/t-sql/statements/insert-transact-sql?view=sql-server-ver15
...
Рейтинг: 0 / 0
Хранимые процедуры
    #39960023
godsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
RumaNO
Написать хранимую процедуру, осуществляющую прописку заданного жителя острова по указанному адресу. При прописке необходимо проверить, достаточно ли площади для прописки, предполагая, что на каждого проживающего должно приходиться не менее 20 м2.

Написал вот процедуру,как сделать условие 20м2
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
ALTER PROC AddHouse
(
   @Id_People int,
   @Id_House int,
   @Start date
)
AS
BEGIN
   INSERT INTO Occupant(Id_People,Id_House,[Start]) VALUES(@Id_People,@Id_House,@Start)
   WHERE House.Area/   --вот тут

   SELECT *
   FROM Occupant 
END


Не проще ли сначала проверить, выполняется ли условие, и, если да, то делать Insert, если нет, то выход с ошибкой?
...
Рейтинг: 0 / 0
Хранимые процедуры
    #39960066
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RumaNO
PizzaPizza, и как проверить?


нельзя проверить И вставить. Это отдельные операции.
Напишите алгоритм по русски

1. найти
2. сравнить с условием
3. если, то
...
n. вставить

потом уже будете под операции писать запросы
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Хранимые процедуры
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]