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

Откуда:
Сообщений: 14
Помогите пожалуйста с задачкой, не понимаю, как ее построить..
Задание следующее:Необходимо создать функцию, которая будет вычислять дату рождения с личного кода.
В базе данных таблицы нету с данными личности. Все нужно создать в функции.
Личный код состоит из 11 чисел. например :38503252239- 85 это год рождения, 0325- 25.03 дата рождения.


CREATE FUNCTION data_rozdenija(@isik CHAR(11)) RETURNS TABLE AS... как дальше... помогите, кто разбирается
1 дек 13, 17:01    [15220698]     Ответить | Цитировать Сообщить модератору
 Re: Функции и процедуры MS SQL Server  [new]
Dmitry V. Liseev
Member [заблокирован]

Откуда: Санкт-Петербург
Сообщений: 5489
А что за таблицу должна вернуть функция?
1 дек 13, 17:20    [15220759]     Ответить | Цитировать Сообщить модератору
 Re: Функции и процедуры MS SQL Server  [new]
Dmitry V. Liseev
Member [заблокирован]

Откуда: Санкт-Петербург
Сообщений: 5489
SUBSTRING не подойдёт?
1 дек 13, 17:24    [15220767]     Ответить | Цитировать Сообщить модератору
 Re: Функции и процедуры MS SQL Server  [new]
Sekoka
Member

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

Скорей всего тебе понадобится еще знать где в личном коде указывается столетие, если оно есть там вообще. Не думаю, что 85 год это тот самый год что был около 2000 лет назад.
Ну да ладно.

CREATE FUNCTION data_rozdenija(@isik CHAR(11)) RETURNS [b]date[/b] AS
BEGIN
	DECLARE @date as date
	SET @date=convert(date,SUBSTRING (@isik ,6 , 2)+'.'+SUBSTRING (@isik ,4 , 2)+'.'+SUBSTRING (@isik ,2 , 2),4)

	RETURN @date
END


А так все просто в фунциях. Жирным выделил тип данных, непонятно как вывести тебе надо результат. Про SUBSTRING почитай в мануале.
1 дек 13, 17:43    [15220822]     Ответить | Цитировать Сообщить модератору
 Re: Функции и процедуры MS SQL Server  [new]
Dmitry V. Liseev
Member [заблокирован]

Откуда: Санкт-Петербург
Сообщений: 5489
Вроде бы RETURNS TABLE требовалось.
1 дек 13, 17:46    [15220827]     Ответить | Цитировать Сообщить модератору
 Re: Функции и процедуры MS SQL Server  [new]
iap
Member

Откуда: Москва
Сообщений: 47194
А так не проще?
SELECT CONVERT(DATE,SUBSTRING('38503252239',2,6),12);
1 дек 13, 17:47    [15220829]     Ответить | Цитировать Сообщить модератору
 Re: Функции и процедуры MS SQL Server  [new]
sdet
Member

Откуда:
Сообщений: 463
Dmitry V. Liseev
Вроде бы RETURNS TABLE требовалось.

Судя по названию темы для ТС что функции, что процедуры, что даты одинаково воспринимаются
1 дек 13, 17:53    [15220849]     Ответить | Цитировать Сообщить модератору
 Re: Функции и процедуры MS SQL Server  [new]
Anzela
Member

Откуда:
Сообщений: 14
Меня просто смутило в задании то, что функция строится без таблицы.
Нашла в одном примере, что вывод происходит таким образом.
Сама вбиваю в запросе код и по функции обрабатывает и выдает дату рождения
SELECT * FROM data_rozdenija('38503252239')
1 дек 13, 18:28    [15220951]     Ответить | Цитировать Сообщить модератору
 Re: Функции и процедуры MS SQL Server  [new]
Anzela
Member

Откуда:
Сообщений: 14
RETURNS TABLE
По поводу этого, я нашла пример, ну судя по всему там уже была таблица..значит мне тот вариант не подходил..))
1 дек 13, 18:31    [15220957]     Ответить | Цитировать Сообщить модератору
 Re: Функции и процедуры MS SQL Server  [new]
Anzela
Member

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

85 это год рождения.. 1985
вывести должно таким образом 25.03.85
1 дек 13, 18:35    [15220973]     Ответить | Цитировать Сообщить модератору
 Re: Функции и процедуры MS SQL Server  [new]
iap
Member

Откуда: Москва
Сообщений: 47194
Anzela
RETURNS TABLE
По поводу этого, я нашла пример, ну судя по всему там уже была таблица..значит мне тот вариант не подходил..))
Может, проще вдумчиво прочитать небольшой текст:
http://msdn.microsoft.com/ru-ru/library/ms186755(v=sql.100).aspx
??
1 дек 13, 18:39    [15220978]     Ответить | Цитировать Сообщить модератору
 Re: Функции и процедуры MS SQL Server  [new]
iap
Member

Откуда: Москва
Сообщений: 47194
iap
Anzela
RETURNS TABLE
По поводу этого, я нашла пример, ну судя по всему там уже была таблица..значит мне тот вариант не подходил..))
Может, проще вдумчиво прочитать небольшой текст:
http://msdn.microsoft.com/ru-ru/library/ms186755(v=sql.100).aspx
??
И, собственно говоря, не вижу необходимости из-за какой-то ерунды
городить серверные объекты базы данных.
1 дек 13, 18:40    [15220982]     Ответить | Цитировать Сообщить модератору
 Re: Функции и процедуры MS SQL Server  [new]
sdet
Member

Откуда:
Сообщений: 463
Anzela
Sekoka,

85 это год рождения.. 1985
вывести должно таким образом 25.03.85

А если будет 00 стоять, это какой год?
1 дек 13, 18:58    [15221031]     Ответить | Цитировать Сообщить модератору
 Re: Функции и процедуры MS SQL Server  [new]
Anzela
Member

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

такого стоять не может) неправильно заданные значения
1 дек 13, 19:03    [15221043]     Ответить | Цитировать Сообщить модератору
 Re: Функции и процедуры MS SQL Server  [new]
sdet
Member

Откуда:
Сообщений: 463
Anzela
sdet,

такого стоять не может) неправильно заданные значения

Значит функция должна производить валидацию?
И где эта функция будет использоваться?
1 дек 13, 19:06    [15221057]     Ответить | Цитировать Сообщить модератору
 Re: Функции и процедуры MS SQL Server  [new]
Anzela
Member

Откуда:
Сообщений: 14
Это просто функция, которая будет выводить дату рождения с личного кода человека.
Для проверки работы функции личный код должны сами вводить
1 дек 13, 19:21    [15221119]     Ответить | Цитировать Сообщить модератору
 Re: Функции и процедуры MS SQL Server  [new]
sdet
Member

Откуда:
Сообщений: 463
Anzela
Это просто функция, которая будет выводить дату рождения с личного кода человека.
Для проверки работы функции личный код должны сами вводить

Вы не ответили на вопросы
функция должна производить валидацию?
какой объект будет вызывать функцию?
1 дек 13, 19:27    [15221151]     Ответить | Цитировать Сообщить модератору
 Re: Функции и процедуры MS SQL Server  [new]
Anzela
Member

Откуда:
Сообщений: 14
sdet
функция должна производить валидацию?
какой объект будет вызывать функцию?


насчет валидации это необязательно. В условии этого не было. Есть только цель вычислить дату рождения по личному коду

А про объект я не поняла..
1 дек 13, 19:39    [15221212]     Ответить | Цитировать Сообщить модератору
 Re: Функции и процедуры MS SQL Server  [new]
sdet
Member

Откуда:
Сообщений: 463
Anzela
sdet
функция должна производить валидацию?
какой объект будет вызывать функцию?


насчет валидации это необязательно. В условии этого не было. Есть только цель вычислить дату рождения по личному коду

А про объект я не поняла..

Вы же сказали, что в случае 00 должно быть выведено неправильно заданные значения
Или функция должна вернуть 1900?
Как вы будете вызывать эту функцию, через приложение или в SQL Server Management studio в виде учебного примера или лабораторной работы?
1 дек 13, 19:49    [15221250]     Ответить | Цитировать Сообщить модератору
 Re: Функции и процедуры MS SQL Server  [new]
Anzela
Member

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

CREATE FUNCTION data_rozdenija(@isik CHAR(11)) RETURNS datetime AS
BEGIN
DECLARE @date as datetime

SET @date=convert(datetime,SUBSTRING (@isik ,6 , 2)+'.'+SUBSTRING (@isik ,4 , 2)+'.'+SUBSTRING (@isik ,2 , 2),4)

RETURN @date
END


в Microsoft SQL Server Management буду проверять по функции вывод по личному коду..

Мне нужно тогда через SELECT написать правильный личный код в виде примера, чтоб выдал дату рождения)
1 дек 13, 19:56    [15221273]     Ответить | Цитировать Сообщить модератору
 Re: Функции и процедуры MS SQL Server  [new]
Dmitry V. Liseev
Member [заблокирован]

Откуда: Санкт-Петербург
Сообщений: 5489
Не обязателен SELECT. Можно через SET значение присвоить, вызвав функцию. Просто больше строчек кода писать.
1 дек 13, 22:05    [15221719]     Ответить | Цитировать Сообщить модератору
 Re: Функции и процедуры MS SQL Server  [new]
Dmitry V. Liseev
Member [заблокирован]

Откуда: Санкт-Петербург
Сообщений: 5489
Не юзайте datetime, юзайте date.
1 дек 13, 22:10    [15221735]     Ответить | Цитировать Сообщить модератору
 Re: Функции и процедуры MS SQL Server  [new]
Anzela
Member

Откуда:
Сообщений: 14
Dmitry V. Liseev,

с date не работает
1 дек 13, 23:25    [15221932]     Ответить | Цитировать Сообщить модератору
 Re: Функции и процедуры MS SQL Server  [new]
Dmitry V. Liseev
Member [заблокирован]

Откуда: Санкт-Петербург
Сообщений: 5489
Anzela
Dmitry V. Liseev,

с date не работает
Надо постичь дзен CAST и CONVERT. И потом написать политкорректный код. Чтобы он работал независимо от национальности сервера. Если Вам нужна дата, то нужно использовать именно date. Поскольку с datetime могут быть фокусы при работе приложения в разных часовых поясах и при сравнении значений. Да и памяти меньше занимает. Да и сам datetime давно протух. Вместо него рекомендуется datetime2.
2 дек 13, 00:30    [15222205]     Ответить | Цитировать Сообщить модератору
 Re: Функции и процедуры MS SQL Server  [new]
Anzela
Member

Откуда:
Сообщений: 14
Dmitry V. Liseev,
Хорошо, спасибо..буду иметь ввиду
2 дек 13, 00:46    [15222273]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить