Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
4 / 4 / 0
Регистрация: 15.06.2011
Сообщений: 75

Переменные в процедуре

29.11.2013, 20:28. Показов 2060. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Необходимо создать процедуру, которая бы подсчитывала количество прожитых дней в гостинице и сумму за проживание по определенному номеру. Ввела переменную kol_d, которая будет равна количеству дней, переменную Summa, которая будет равна сумме за проживание. Но вот проблема в том, что при вызове процедуры с меня просят значения эти переменных, хотя вроде как прописала в процедуре как их получить. Так вот, мне нужно, чтобы при вызове процедуры я вводила только код номера и всё. Что у меня неправильно? Подскажите пожалуйста.

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CREATE PROCEDURE Schet
@Nomer INT,
@Kol_d INT,
@Summa money
 
AS
SELECT Заказ_номера.код_заказа_номера, Заказ_номера.код_клиента, 
Заказ_номера.код_номера, Номера.код_категории_номера, Номера.Размещение,
 Номера.стоимость_в_сутки, Клиент.Фамилия, Клиент.Имя, 
 Клиент.Отчество, Заказ_номера.дата_заезда, Заказ_номера.Дата_выезда, 
 Гостиница.Название_гостиницы, Гостиница.Адрес_гостиницы, 
 Гостиница.Телефон_гостиницы, @Kol_d AS Количество_дней, @Summa AS Сумма 
FROM Гостиница, Номера INNER JOIN (Клиент INNER JOIN Заказ_номера ON 
Клиент.код_клиента = Заказ_номера.код_клиента) ON 
Номера.код_номера = Заказ_номера.код_номера
WHERE (((Заказ_номера.код_номера)=@Nomer) AND ((Заказ_номера.Дата_выезда)>{fn Now()})
AND(@Kol_d=DATEDIFF(d,Заказ_номера.Дата_выезда,Заказ_номера.дата_заезда))
AND (@Summa=@Kol_d*Номера.стоимость_в_сутки));
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.11.2013, 20:28
Ответы с готовыми решениями:

Как быстрее передавать процедуре переменные?
Всем привет, Допустим, у меня есть процедура, которой требуются данные. Что будет быстрее (и насколько быстрее): передавать эти данные...

Глобальные и локальные переменные, одна и та же прога в процедуре Не работает, а просто так работает. Почему?
Здравствуйте, есть программка которая переводит из 2-ной системы в 10-ную. Она работает. А вот поместил я её в процедуру и работать...

Параметры-значения и параметры-переменные в функции и процедуре
Плиз помогите в этом коде поставить параметры или атрибуты, не уверен в правильном названии, для функции и процедуры, я по примерам...

5
 Аватар для ksk
624 / 495 / 43
Регистрация: 05.07.2010
Сообщений: 1,589
29.11.2013, 21:02
SQL
1
2
3
4
5
6
CREATE PROCEDURE Schet
@Nomer INT,
AS
DECLARE @Kol_d INT
DECLARE @Summa money
...
1
4 / 4 / 0
Регистрация: 15.06.2011
Сообщений: 75
29.11.2013, 21:52  [ТС]
Спасибо большое!!! Но теперь проблема в другом. В подсчете дней, т.е. в этом кусочке:
SQL
1
(@Kol_d=DATEDIFF(d, Заказ_номера.Дата_выезда,Заказ_номера.дата_заезда))
Когда убираю его и всё, что после него, запрос выводит всё, но тогда в количестве и сумме значение NULL. Может я неправильно использую эту функцию? Пробовала менять местами дату заезда и дату выезда.
0
 Аватар для ksk
624 / 495 / 43
Регистрация: 05.07.2010
Сообщений: 1,589
29.11.2013, 22:47
я бы сначала просто поселектил из таблички это выражение с DATEDIFF, чтобы локализовать проблему.
0
4 / 4 / 0
Регистрация: 15.06.2011
Сообщений: 75
30.11.2013, 19:59  [ТС]
Заменила переменную @Kol_d на такую запись
SQL
1
CONVERT(INT,Заказ_номера.Дата_выезда - Заказ_номера.дата_заезда) AS Количество_дней
а переменную @Summa на
SQL
1
CONVERT(INT,Заказ_номера.Дата_выезда - Заказ_номера.дата_заезда)*Номера.стоимость_в_сутки AS Сумма_за_проживание
Теперь дни считает, но вот если допустим дата заезда была 21.11.2013 15:30:00, а дата выезда 22.11.2013 15:50:00, то он возвращает 1, а мне надо, чтобы он учитывал, что пошли новые сутки. Попробую посоображать, но если у кого-то есть мысли как это сделать, буду признательна.
0
 Аватар для ksk
624 / 495 / 43
Регистрация: 05.07.2010
Сообщений: 1,589
01.12.2013, 01:10
У Вас же наверное есть расчётный час заезда и выезда, который не совпадает с тем часом, когда карета превращается в тыкву. Обычно это бывает днём в такое время, чтобы как можно больше гостей пересекли его при выезде, либо свалили заведомо раньше с чемоданами, чтобы гостям не платить за новые сутки, а гостинице в те же сутки снова заселить номер.

То есть у вас должна быть соответствующая настройка, и Вам нужно относительно неё считать сутки проживания.
Я бы взял DateDiff в минутах между заездом и выездом, поделил бы на 1440 и округлил бы результат в большую сторону. Это были бы "чистые" сутки.

Затем бы сопоставил с временем выселения и если оно превышает расчётный час, а время заселения не превышает расчётный час, то накинул бы ещё сутки.

Это было бы похоже на то, как работает гостиничная бухгалтерия.

Добавлено через 1 минуту
Возможно, нужно аналогичный фокус проделать с расчётным временем заселения, если оно регламентировано в данной гостинице (не везде оно есть).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.12.2013, 01:10
Помогаю со студенческими работами здесь

Внутриблочные переменные не могут иметь те же имена, что и переменные из блока верхнего уровня
program matr; uses crt; const n = 5; m = 5; var

Создать программу обработки массивов структур используя структурные переменные и переменные типа объеденения
Создать массив структур, каждая из которых состоит из следующих елементов: факультет, курс, группа, фамилия студента и екзаменационная...

Почему в локальном классе доступны финальные переменные или переменные инициализированные при объявлении
Добрый вечер. Объясните пожалуйста, почему в локальном классе могут использоваться только финальные переменные или переменные которые были...

Запись из формы данных в переменные php файла, данные из переменные используются в других файлах сайта
Всем привет! Ребят, подскажите пожалуйста! Есть один файл с обычной html формой, в которой обычные данные (фио, вэб-ссылка, контактные...

Переменные экземпляра, класса, константы и переменные readonly
Как эту задачу записать в C#? Переменные экземпляра, класса, константы и переменные readonly: – Ф.И.О., – должность, – базовый...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru