Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2013, 20:32   #11
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,386
По умолчанию

Цитата:
почему вариант Blondy не работает не понял
У меня есть такое тайное подозрение, что даже ейсли на поле дата таблицы Архив стоит получение сегодняшней даты по умолчанию, все равно ее надо передавать, даже таким искусственным путем, как предложил Аватар......Я так думаю. Практически смогу проверить позже.
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 13.04.2013, 22:42   #12
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

убрать нулл из поля даты, он конфликтует с дефолтом
eval вне форума Ответить с цитированием
Старый 13.04.2013, 22:59   #13
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

Код:
CREATE TABLE [dbo].[Archive](
	[archive_id] [int] IDENTITY(1,1) PRIMARY KEY NOT NULL,
	[ID_record] [int] NULL,
	[ID_reis] [int] NULL,
	[arc_date] [datetime] DEFAULT (getdate())  )

insert Archive ([ID_record], [ID_reis])
select 1,1
union
select 2,2
union
select 3,3

select * from [Archive]

1	1	1	2013-04-13 21:55:32.870
2	2	2	2013-04-13 21:55:32.870
3	3	3	2013-04-13 21:55:32.870
полет нормальный
eval вне форума Ответить с цитированием
Старый 15.04.2013, 16:25   #14
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,386
По умолчанию

Дорогой eval, спасибо Вам огромное. Вот все эти токости по поводу null и dafault это такие подводные камни. В справочнике сказано, что если стоит по умолчанию null или прописано getdate прямо таки поставит сегодняшний день.

Ой Вы не могли бы меня вот еще по какому вопросу по поводу той же процедуры проконсультировать. Как это сделать правильно - в табличке Reis у меня стоит поле типа int, куда пасивывается день недели в виде цифры - типа по каким дням недели существует рейс. Мы привыкли использовать дни недели от 1 до 7 (с понедельника по воскресенье), но встроенные функции работы с датой DayofWeek и прочее понимают дни недели от 0 до 6, причем 0 будет воскресенье. Если я запросом выбираю рейсы сегодняшнего дня, то как поступить в каком случае, если сегодня это воскресенье (DayofWeek=0), а в таблице у меня стоит для воскресенья значение 7? Могу ли я использовать синтетический сахар в процедуре в самом запросе - что-то типа типа iff(DayofWeek.equals(0))?7 , или это лучше как-то обыграть при определении параметра?
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan

Последний раз редактировалось Blondy; 15.04.2013 в 16:38.
Blondy вне форума Ответить с цитированием
Старый 15.04.2013, 18:49   #15
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Так будет понедельник 1, воскресенье 7
Код:
SET DATEFIRST 1
SELECT datepart(dw,MyDate) FROM ....
Это для MS SQL как я в начале решил, правда сильно сомневаюсь теперь, прочитав последнее сообщение
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 15.04.2013, 23:24   #16
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,386
По умолчанию

Это прямо таки в процедуре перед началом запроса на выборку данных на сегодняшний день писать SET DATEFIRST 1, да?
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 16.04.2013, 15:45   #17
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Можно и в процедуре до SELECT-а. По выходу из процедуры восстановится исходное значение (см. @@DATEFIRST). И этот SET определенных полномочий требует
http://msdn.microsoft.com/ru-ru/library/ms181598.aspx
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 18.04.2013, 21:40   #18
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,386
По умолчанию

Прошу прощения, что я опять по поводу многострадальной процедуры пристаю. Вот как это понять: процедура написана (правда я еще @@DATEFIRST не тестировала, пока INSERT и SELECT). Процедура успешно создалась, я ее запустила на выполнение, а мне в ответ
Код:
DECLARE	@return_value int

EXEC	@return_value = [dbo].[transTest]
		@status = NULL

SELECT	'Return Value' = @return_value

GO
И показали табличку (в приложении).
Насколько я поняла из сообщения, принудительную передачу параметра @status = 4 (ALTER PROCEDURE [dbo].[transTest] ( @status INT = 4)) процедура не поняла. Поэтому и поставила сама @status = NULL. И естественно никаких изменений в таблице Архив не сделала.
А разве таким образом (в заголовке процедуры)нельзя передавать значение входного параментра? И что значит на рисунке в табличке Value значние 0 - типа ни одна строка не была изменена?

И скажите - разве процедура возвращает значения (тут Return Value)? Я думала это только функция возвращает значение, мне нужна именно процедура.
Изображения
Тип файла: jpg proc1.JPG (3.8 Кб, 10 просмотров)
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 18.04.2013, 21:45   #19
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
типа ни одна строка не была изменена?
Да. Это количество измененных записей.
Цитата:
А разве таким образом (в заголовке процедуры)нельзя передавать значение входного параментра?
В смысле параметры по умолчанию?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.04.2013, 22:00   #20
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,386
По умолчанию

Вот при создании (так как процедура создана - уже при изменении) мы пишем:
Код:
ALTER PROCEDURE [dbo].[transTest] (@status int = 4)
то есть уже присваеваем значение параметру @status (4 означает, что автобус рейс завершил и вернулся на базу). И мы архивируем именно завершенные рейсы.
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчёт в стринггриде если заполнены только первые n столбцов _Oleg Общие вопросы Delphi 4 27.12.2012 18:03
В матрице m*n определить номера и количество полностью нулевых столбцов moshensky Общие вопросы C/C++ 1 08.11.2012 16:12
вывод номеров столбцов матрицы и подсчитать количество этих столбцов Vitalina69 Помощь студентам 2 15.02.2011 21:52
Как получить количество столбцов из выборки ssdm Java Базы данных (JDBC, JPA, Hibernate) 1 25.01.2010 19:21
Подскажите что делать если в екселе пропали буквы столбцов ivkoa Microsoft Office Excel 2 22.07.2008 16:55