ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Лабораторная Ρ€Π°Π±ΠΎΡ‚Π°: ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π—Π΄Π΅ΡΡŒ «Ρ‡Π°ΡΡ‚ΡŒ Π΄Π°Ρ‚Ρ‹» — это Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ символами Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ измСрСния (Ρ‡Π°ΡΡ‚ΡŒ Π΄Π°Ρ‚Ρ‹) (yy — Π³ΠΎΠ΄, mm — мСсяц, dd — дСнь), «Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ Π΄Π°Ρ‚Π°» — Π΄Π°Ρ‚Π° Π½Π°Ρ‡Π°Π»Π° ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° ΠΈ «ΠΊΠΎΠ½Π΅Ρ‡Π½Π°Ρ Π΄Π°Ρ‚Π°» — Π΄Π°Ρ‚Π° ΠΊΠΎΠ½Ρ†Π° ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π°. Π’ Π½Π°ΡˆΠ΅ΠΌ случаС Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Π΄Π°Ρ‚Ρ‹ Π±Π΅Ρ€Π΅ΠΌ Π΄Π°Ρ‚Ρƒ роТдСния студСнта, Π° Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Π΄Π°Ρ‚Ρ‹ Π±Π΅Ρ€Π΅ΠΌ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π΄Π°Ρ‚Ρƒ (функция GetDate ()). SET @TmpDate=Convert (Varchar… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Лабораторная Ρ€Π°Π±ΠΎΡ‚Π°: ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ЦСль: Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌΠΈ функциями Π’Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим созданиС ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π’ Π‘Π” «Microsoft SQL Server 2008» всС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ находятся Π² ΠΏΠ°ΠΏΠΊΠ΅ «Functions» располоТСнной Π² ΠΏΠ°ΠΏΠΊΠ΅ «Programmability» Π² ΠΎΠ±ΠΎΠ·Ρ€Π΅Π²Π°Ρ‚Π΅Π»Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (рис. 12.1).

Рис. 12.1.

Рис. 12.1.

НачнСм с ΡΠΎΠ·Π΄Π°Π½ΠΈΡ скалярных ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Для создания Π½ΠΎΠ²ΠΎΠΉ скалярной ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΎΠ±ΠΎΠ·Ρ€Π΅Π²Π°Ρ‚Π΅Π»Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π² Π‘Π” «Students», Π² ΠΏΠ°ΠΏΠΊΠ΅ «Programmability», Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ПКМ ΠΏΠΎ ΠΏΠ°ΠΏΠΊΠ΅ «Functions» ΠΈ Π² ΠΏΠΎΡΠ²ΠΈΠ²ΡˆΠ΅ΠΌΡΡ мСню Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚ «New/Scalar-valued Function». ΠŸΠΎΡΠ²ΠΈΡ‚ΡΡ ΠΎΠΊΠ½ΠΎ Π½ΠΎΠ²ΠΎΠΉ скалярной ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Рис. 12.2.

Рис. 12.2.

Бинтаксис скалярной ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° ΡΠΈΠ½Ρ‚аксис Ρ…Ρ€Π°Π½ΠΈΠΌΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ (см. Π·Π°Π½ΡΡ‚ΠΈΠ΅ 17). Однако имССтся ряд сущСствСнных ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΉ (рис. 12.2):

ΠžΠ±Π»Π°ΡΡ‚ΡŒ опрСдСлСния ΠΈΠΌΠ΅Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Inline_Function_Name);

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ (@Param1). ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² Ρ…Ρ€Π°Π½ΠΈΠΌΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ (см. Π·Π°Π½ΡΡ‚ΠΈΠ΅ 5);

Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… значСния Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ;

ΠžΠ±Π»Π°ΡΡ‚ΡŒ объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ОбъявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис:

DECLARE @.

Π’Π΅Π»ΠΎ самой ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, содСрТит ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ языка программирования запросов T-SQL;

Команда RETURN Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π°Ρ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π˜ΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис:

RETURN @.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» ΡƒΠΊΠ°Π·Π°Π½ Π² ΠΏΡƒΠ½ΠΊΡ‚Π΅ 3.

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠΊΠ°Π»ΡΡ€Π½ΡƒΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‰ΡƒΡŽ срСднСС Ρ‚Ρ€Π΅Ρ… Π²Π΅Π»ΠΈΡ‡ΠΈΠ½. Π’ ΠΎΠΊΠ½Π΅ Π½ΠΎΠ²ΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π°Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ прСдставлСнный Π½Π° Ρ€ΠΈΡ. 12.3.

Рассмотрим Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΊΠΎΠ΄ Π΄Π°Π½Π½ΠΎΠΉ скалярной ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (рис. 12.3):

CREATE FUNCTION [Ѐункция срСдних Ρ‚Ρ€Π΅Ρ… Π²Π΅Π»ΠΈΡ‡ΠΈΠ½] - опрСдСляСт имя создаваСмой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠ°ΠΊ «Π€ΡƒΠ½ΠΊΡ†ΠΈΡ срСдних Ρ‚Ρ€Π΅Ρ… Π²Π΅Π»ΠΈΡ‡ΠΈΠ½» ;

@Value1 Real, @Value2, @Value3 — ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Ρ‚Ρ€ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Value1, Value2 ΠΈ Value3. Π”Π°Π½Π½Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Ρ†Π΅Π»Ρ‹Π΅ числа (Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Int);

RETURNS Real — ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ числа (Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Real);

DECLARE @Result Real — ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ пСрСмСнная @Result для хранСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΄Ρ€ΠΎΠ±Π½ΠΎΠ³ΠΎ числа (Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Real);

SELECT @Result=(@Value1+@Value2+@Value3)/3 — вычисляСт срСднСС ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ @Result ;

RETURN @Result — Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ @Result.

ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠΎΠ΄Π° рассмотрСны Π²Ρ‹ΡˆΠ΅ (рис. 12.2).

Для создания Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, Π½Π°ΠΆΠ°Π² ΠΊΠ½ΠΎΠΏΠΊΡƒ.

(Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ) Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов. Π’ Π½ΠΈΠΆΠ½Π΅ΠΉ части ΠΎΠΊΠ½Π° с ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ сообщСниС «Command (s) completed successfully.». Π—Π°ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΎΠΊΠ½ΠΎ с ΠΊΠΎΠ΄ΠΎΠΌ, Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ² ΠΌΡ‹ΡˆΡŒΡŽ ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅ закрытия располоТСнной Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΠΏΡ€Π°Π²ΠΎΠΌ ΡƒΠ³Π»Ρƒ ΠΎΠΊΠ½Π° с ΠΊΠΎΠ΄ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρƒ созданной скалярной ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Для запуска ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ пустой запрос, Π½Π°ΠΆΠ°Π² Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ.

(Новый запрос) Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов. Π’ ΠΏΠΎΡΠ²ΠΈΠ²ΡˆΠ΅ΠΌΡΡ ΠΎΠΊΠ½Π΅ с ΠΏΡƒΡΡ‚Ρ‹ΠΌ запросом Π½Π°Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ SELECT dbo. Ѐункция срСдних Ρ‚Ρ€Π΅Ρ… Π²Π΅Π»ΠΈΡ‡ΠΈΠ½] (3, 5, 4) ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов (рис. 12.4).

Рис. 12.4.

Рис. 12.4.

Π’ Π½ΠΈΠΆΠ½Π΅ΠΉ части ΠΎΠΊΠ½Π° с ΠΊΠΎΠ΄ΠΎΠΌ появится Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния Π½ΠΎΠ²ΠΎΠΉ скалярной ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: 4 (рис. 12.4).

Π’Π΅ΠΏΠ΅Ρ€ΡŒ создадим Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡƒΡŽ ΡΠΊΠ°Π»ΡΡ€Π½ΡƒΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΡƒΡŽ для опрСдСлСния послСднСго дня мСсяца Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π΄Π°Ρ‚Ρ‹. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²ΡƒΡŽ ΡΠΊΠ°Π»ΡΡ€Π½ΡƒΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ± ΡΡ‚ΠΎΠΌ сказано Π²Ρ‹ΡˆΠ΅. Π’ ΠΎΠΊΠ½Π΅ Π½ΠΎΠ²ΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π°Π±Π΅Ρ€ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ (рис. 12.5):

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° (рис. 12.5). Код состоит ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π³Ρ€ΡƒΠΏΠΏ ΠΊΠΎΠΌΠ°Π½Π΄:

CREATE FUNCTION [ПослСдний дСнь мСсяца] - опрСдСляСт имя создаваСмой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠ°ΠΊ «ΠŸΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ дСнь мСсяца» ;

@MyDate — ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ MyDate. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ значСния Π΄Π°Ρ‚ ΠΈΠ»ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ (Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… DateTime);

RETURNS DateTime — ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΄Π°Ρ‚Ρƒ ΠΈΠ»ΠΈ врСмя (Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… DateTime);

DECLARE @Year Int, DECLARE @Month Int, DECLARE @Day Int — ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ @Year, @Month ΠΈ@Day для хранСния цСлочислСнных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π³ΠΎΠ΄Π°, мСсяца ΠΈ Π΄Π½Ρ Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π΄Π°Ρ‚Ρ‹ (Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Int).

DECLARE @TmpDate VarChar (10) ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ «TmpDate» для хранСния ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ значСния Π΄Π°Ρ‚Ρ‹ Π² ΡΡ‚Ρ€ΠΎΠΊΠ΅ Π΄Π»ΠΈΠ½Π½ΠΎΠΉ Π΄ΠΎ 10 символов (Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… VarChar (10)).

DECLARE @Result DateTime ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ «Result» для хранСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° — Π΄Π°Ρ‚Ρ‹ послСднСго дня мСсяца (Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… DateTime).

SET @Year=DatePart (yy, @MyDate), SET @Month=DatePart (mm, @MyDate), SET @Day=DatePart (dd, @MyDate) — ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ части Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π΄Π°Ρ‚Ρ‹ ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ся Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π½Π΅ @Year, @Month ΠΈ @Day. Для опрСдСлСния частСй Π΄Π°Ρ‚Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция DatePart, ΠΈΠΌΠ΅ΡŽΡ‰Π°Ρ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис: DatePart (,). Π—Π΄Π΅ΡΡŒ «Ρ‡Π°ΡΡ‚ΡŒ Π΄Π°Ρ‚Ρ‹» — это закодированная ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ символами опрСдСляСмая Ρ‡Π°ΡΡ‚ΡŒ Π΄Π°Ρ‚Ρ‹ (yy — Π³ΠΎΠ΄, mm — мСсяц, dd — дСнь), «Π΄Π°Ρ‚Π°» — это Π΄Π°Ρ‚Π°, части ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ опрСдСляСм.

IF @Month=12.

BEGIN.

SET @Month=1.

SET @Year=@Year+1.

END.

ELSE.

BEGIN.

SET @Month=@Month+1.

END.

Π’Ρ‹ΡˆΠ΅ΠΏΡ€Π΅Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π° выполняСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия: Если Π½ΠΎΠΌΠ΅Ρ€ мСсяца Ρ€Π°Π²Π΅Π½ 12 Ρ‚ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ мСсяца (@Month) Ρ€Π°Π²Π½Ρ‹ΠΌ 1 ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Π³ΠΎΠ΄ (@Year) Π½Π° 1, ΠΈΠ½Π°Ρ‡Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ мСсяц Π½Π° 1.

SET @TmpDate=Convert (Varchar, @Month)+'/01/'+Convert (Varchar, @Year), SET @Result=Convert (DateTime, @TmpDate) — ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ числовыС значСния Π΄Π°Ρ‚Ρ‹ Π² Π΄Π°Ρ‚Ρƒ Π² ΡΡ‚Ρ€ΠΎΠΊΠΎΠ²ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Π΅Ρ‚ Π΅Π΅ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ @TmpDate, Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ Π΄Π°Ρ‚Ρƒ Π² ΡΡ‚Ρ€ΠΎΠΊΠΎΠ²ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Π² Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π΄Π°Ρ‚Ρ‹ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Π΅Π΅ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ @Result. Для ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция Convert, ΠΈΠΌΠ΅ΡŽΡ‰Π°Ρ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис:

Convert (,), здСсь «Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…» это Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ пСрСводится «Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅» .

SET @Result=DateAdd (dd, -1, @Result) — ΠΈΠ· Π΄Π°Ρ‚Ρ‹, Ρ…Ρ€Π°Π½ΠΈΠΌΠΎΠΉ Π² ΠΏΠ΅Ρ€ΠΌΠ΅Π½Π½ΠΎΠΉ @Result вычитаСтся 1 дСнь, для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция DateAdd, ΠΈΠΌΠ΅ΡŽΡ‰Π°Ρ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис:

DateAdd (, ,) — здСсь «Ρ‡Π°ΡΡ‚ΡŒ Π΄Π°Ρ‚Ρ‹» — это закодированная ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ символами опрСдСляСмая Ρ‡Π°ΡΡ‚ΡŒ Π΄Π°Ρ‚Ρ‹ (см. Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ DatePart), «ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΎΠ²» — это количСство частСй Π΄Π°Ρ‚Ρ‹ прибавляСмой ΠΊ Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π΄Π°Ρ‚Π΅ (ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ «Π΄Π°Ρ‚Π°»).

RETURN @Result — Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ…Ρ€Π°Π½ΠΈΠΌΠΎΠ΅ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ @Result.

Для создания Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠ°ΠΊ ΠΈ Π² ΡΠ»ΡƒΡ‡Π°Π΅ с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, Π½Π°ΠΆΠ°Π² ΠΊΠ½ΠΎΠΏΠΊΡƒ ПослС появлСния сообщСния «Command (s) completed successfully.» Π·Π°ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΎΠΊΠ½ΠΎ с ΠΊΠΎΠ΄ΠΎΠΌ.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ «ΠŸΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ дСнь мСсяца» Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² Π΅Π΅. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ пустой запрос, Π·Π°Ρ‚Π΅ΠΌ Π² ΠΎΠΊΠ½Π΅ с ΠΏΡƒΡΡ‚Ρ‹ΠΌ запросом Π½Π°Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ SELECT dbo. ПослСдний дСнь мСсяца] ('12/07/08') ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов (рис. 12.6).

Рис. 12.6.

Рис. 12.6.

ΠŸΠΎΡΠ²ΠΈΡ‚ΡΡ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния Π½ΠΎΠ²ΠΎΠΉ скалярной ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: 2008;12−31 (рис. 12.6).

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡŽ Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Для создания Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΎΠ±ΠΎΠ·Ρ€Π΅Π²Π°Ρ‚Π΅Π»Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π² Π‘Π” «Students», Π² ΠΏΠ°ΠΏΠΊΠ΅ «Programmability», Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ПКМ ΠΏΠΎ ΠΏΠ°ΠΏΠΊΠ΅ «Functions» ΠΈ Π² ΠΏΠΎΡΠ²ΠΈΠ²ΡˆΠ΅ΠΌΡΡ мСню Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚ «New/Table-valued Function». ΠŸΠΎΡΠ²ΠΈΡ‚ΡΡ ΠΎΠΊΠ½ΠΎ Π½ΠΎΠ²ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (рис. 12.7).

Рис. 12.7.

Рис. 12.7.

Рассмотрим структуру ΠΊΠΎΠ΄Π° Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Вабличная ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠ°Ρ функция состоит ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ²:

ΠžΠ±Π»Π°ΡΡ‚ΡŒ опрСдСлСния ΠΈΠΌΠ΅Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Inline_Function_Name);

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ (@Param1, @Param2);

RETURNS TABLE ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‡Ρ‚ΠΎ функция являСтся Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΉ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ;

Π’Π΅Π»ΠΎ самой ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, состоит ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ SELECT языка программирования запросов T-SQL.

ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π°Π·Π΄Π΅Π»Ρ‹ Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ Ρ€Π°Π·Π΄Π΅Π»Π°ΠΌ Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΈ ΡΠΊΠ°Π»ΡΡ€Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ рассмотрим созданиС Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ «Π€ΡƒΠ½ΠΊΡ†ΠΈΡ ΠΎΡ‚Π±ΠΎΡ€Π° ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Ρƒ», Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‰ΠΈΡ… Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ возраст студСнтов Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ ΠΈΡ… Π΄Π°Ρ‚Ρ‹ роТдСния. Π’ ΠΎΠΊΠ½Π΅ Π½ΠΎΠ²ΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (рис. 12.7) Π½Π°Π±Π΅Ρ€ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ (рис. 12.8):

Рис. 12.8.

Рис. 12.8.

Из ΠΊΠΎΠ΄Π° прСдставлСнного Π½Π° Ρ€ΠΈΡ. 12.8 Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ данная табличная функция Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ся ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ.

SELECT ЀИО, [Π”Π°Ρ‚Π° роТдСния], Возраст = DateDiff (yy, [Π”Π°Ρ‚Π° роТдСния], GetDate ()).

FROM Π‘Ρ‚ΡƒΠ΄Π΅Π½Ρ‚Ρ‹ Из Π²Ρ‹ΡˆΠ΅ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ «Π‘Ρ‚ΡƒΠ΄Π΅Π½Ρ‚Ρ‹» ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ поля «Π€Π˜Πž» ΠΈ «Π”Π°Ρ‚Π° роТдСния», Π° Ρ‚Π°ΠΊΠΆΠ΅ вычислимоС ΠΏΠΎΠ»Π΅ «Π’озраст». ПолС «Π’озраст» вычисляСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ встроСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈDateDiff Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‰Π΅ΠΉ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Π°Ρ‚Π°ΠΌΠΈ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π΅Π΄ΠΈΠ½ΠΈΡ†Π°Ρ… измСрСния (частях Π΄Π°Ρ‚Ρ‹) ΠΈ ΠΈΠΌΠ΅ΡŽΡ‰Π΅ΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис:

DateDiff (, ,).

Π—Π΄Π΅ΡΡŒ «Ρ‡Π°ΡΡ‚ΡŒ Π΄Π°Ρ‚Ρ‹» — это Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ символами Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ измСрСния (Ρ‡Π°ΡΡ‚ΡŒ Π΄Π°Ρ‚Ρ‹) (yy — Π³ΠΎΠ΄, mm — мСсяц, dd — дСнь), «Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ Π΄Π°Ρ‚Π°» — Π΄Π°Ρ‚Π° Π½Π°Ρ‡Π°Π»Π° ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° ΠΈ «ΠΊΠΎΠ½Π΅Ρ‡Π½Π°Ρ Π΄Π°Ρ‚Π°» — Π΄Π°Ρ‚Π° ΠΊΠΎΠ½Ρ†Π° ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π°. Π’ Π½Π°ΡˆΠ΅ΠΌ случаС Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Π΄Π°Ρ‚Ρ‹ Π±Π΅Ρ€Π΅ΠΌ Π΄Π°Ρ‚Ρƒ роТдСния студСнта, Π° Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Π΄Π°Ρ‚Ρ‹ Π±Π΅Ρ€Π΅ΠΌ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π΄Π°Ρ‚Ρƒ (функция GetDate ()).

Для создания Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠ°ΠΊ ΠΈ Π² ΡΠ»ΡƒΡ‡Π°Π΅ с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ. ПослС появлСния сообщСния «Command (s) completed successfully.» Π·Π°ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΎΠΊΠ½ΠΎ с ΠΊΠΎΠ΄ΠΎΠΌ.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Π½ΠΎΠ²ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ пустой запрос, Π·Π°Ρ‚Π΅ΠΌ Π² ΠΎΠΊΠ½Π΅ с ΠΏΡƒΡΡ‚Ρ‹ΠΌ запросом Π½Π°Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ SELECT * FROM dbo. Ѐункция ΠΎΡ‚Π±ΠΎΡ€Π° ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Ρƒ]() ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов (рис. 12.9).

Рис. 12.9.

Рис. 12.9.

Π’ Π½ΠΈΠΆΠ½Π΅ΠΉ части ΠΎΠΊΠ½Π° ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Ρ‚Π°Π±Π»ΠΈΡ†Π° с Ρ„амилиями, Π΄Π°Ρ‚Π°ΠΌΠΈ роТдСния ΠΈ Π²ΠΎΠ·Ρ€Π°ΡΡ‚ΠΎΠΌ студСнтов Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ (рис. 12.9).

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ с Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ΠΊΠ°ΠΊ с ΠΎΠ±Ρ‹ΠΊΠ½ΠΎΠ²Π΅Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ.

На ΡΡ‚ΠΎΠΌ ΠΌΡ‹ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π΅ΠΌ рассмотрСниС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ цСлостности Π΄Π°Π½Π½Ρ‹Ρ…, Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌ ΠΈ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ΠΎΠ². По ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠΈ выполнСния Π³Π»Π°Π²Ρ‹ 6 ΠΎΠ±ΠΎΠ·Ρ€Π΅Π²Π°Ρ‚Π΅Π»ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄ (рис. 12.10):

Рис. 12.10.

Рис. 12.10.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ