Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ Π² oracle

Oracle PL/SQL β€’MySQL β€’MariaDB β€’SQL Server β€’SQLite

Π‘Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

Oracle PL/SQL ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹

Π’ этом ΡƒΡ‡Π΅Π±Π½ΠΎΠΌ пособии Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈ Ρ‚Π΅Π»Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π² Oracle PL/SQL с синтаксисом ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ.

ОписаниС

Π’ Oracle PL/SQL Π½Π°Π±ΠΎΡ€ элСмСнтов: ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, опрСдСлСния Ρ‚ΠΈΠΏΠΎΠ²; объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, констант ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π² ΠΏΠ°ΠΊΠ΅Ρ‚. ПослС написания ΠΏΠ°ΠΊΠ΅Ρ‚ PL/SQL компилируСтся, Π° Π·Π°Ρ‚Π΅ΠΌ сохраняСтся Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Oracle, Π³Π΄Π΅ Π΅Π³ΠΎ содСрТимоС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ прилоТСниями.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ Oracle PL/SQL?

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ Π² oracle. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ Π² oracle. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ Π² oracle. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ Π² oracle. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ Π² oracle

Для создания ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ CREATE PACKAGE.

Бинтаксис

Бинтаксис CREATE PACKAGE Π² Oracle PL/SQL:

БпСцификация ΠΏΠ°ΠΊΠ΅Ρ‚Π° содСрТит ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ объявлСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΈΠ΄Π½Ρ‹ Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² ΠΊΠΎΠ½Ρ†Π΅ спСцификации послС всСх Π΄Ρ€ΡƒΠ³ΠΈΡ… элСмСнтов (ΠΊΡ€ΠΎΠΌΠ΅ ΠΏΡ€Π°Π³ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ; Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡ€Π°Π³ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ спСцификации Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ).

Π’Π΅Π»ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° содСрТит Π΄Π΅Ρ‚Π°Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Π΅ объявлСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ скрыты ΠΎΡ‚ вашСго прилоТСния. Π—Π° Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ Ρ‚Π΅Π»Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° слСдуСт Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, которая ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ содСрТит ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Oracle PL/SQL

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Π²Ρ‹ опрСдСляСтС Ρ‚ΠΈΠΏ запись, курсор ΠΈ Π΄Π²Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΏΠΎ трудоустройству. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° hire_employee ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… empno_seq ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ SYSDATE для вставки Π½ΠΎΠ²ΠΎΠ³ΠΎ Π½ΠΎΠΌΠ΅Ρ€Π° сотрудника ΠΈ Π΄Π°Ρ‚Ρƒ ΠΏΡ€ΠΈΠ΅ΠΌΠ° Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ соотвСтствСнно.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹ Π² PL/SQL: ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅

Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π² PL/SQL?

ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹ β€” ΠΎΡ‡Π΅Π½ΡŒ ваТная составная Ρ‡Π°ΡΡ‚ΡŒ языка PL/SQL, ΠΊΡ€Π°Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ камСнь любого слоТного ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π§Ρ‚ΠΎΠ±Ρ‹ это ΠΏΠΎΠ½ΡΡ‚ΡŒ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ основныС прСимущСства ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²:

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΊ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ прСимущСств ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ описанию синтак­сиса ΠΈΡ… опрСдСлСния, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ Π²Π°ΠΆΠ½ΠΎΠ΅ Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. ВсСгда стройтС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° основС ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²; ΠΈΠ·Π±Π΅Π³Π°ΠΉΡ‚Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π”Π°ΠΆΠ΅ Ссли Π²Π°ΠΌ сСйчас каТСтся, Ρ‡Ρ‚ΠΎ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ возмоТности доста­точно ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΠΊ Π½Π΅ΠΉ ΠΏΠΎΡ‡Ρ‚ΠΈ навСрняка добавятся Π΅Ρ‰Π΅ нСсколько. Когда Π²Ρ‹ ΠΏΠΎΠΉΠΌΠ΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΈΡ… Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π² ΠΏΠ°ΠΊΠ΅Ρ‚, придСтся ΠΈΡΒ­ΠΊΠ°Ρ‚ΡŒ всС Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΊ Π½ΠΈΠΌ прСфикс с ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π°. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ с самого Π½Π°Ρ‡Π°Π»Π°, ΠΈΠ·Π±Π°Π²ΡŒΡ‚Π΅ сСбя ΠΎΡ‚ Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ!

ДСмонстрация возмоТностСй ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² PL/SQL

ΠŸΠ°ΠΊΠ΅Ρ‚ состоит ΠΈΠ· Π΄Π²ΡƒΡ… частСй β€” спСцификации ΠΈ Ρ‚Π΅Π»Π°. БпСцификация являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΒ­Π½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΈ опрСдСляСт, ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚: ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ курсоры ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ Ρ‚. Π΄. Π’Π΅Π»ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° β€” Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ, Π½ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ; ΠΎΠ½Π° содСрТит ΠΊΠΎΠ΄ пСрСчислСнных Π² спСцификации ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ (ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, курсоров), Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ элСмСнты ΠΊΠΎΠ΄Π°. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π½Π°ΠΌ Π½ΡƒΠΆΠ½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для получСния ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ сотрудника, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ хранится Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π²ΠΈΠ΄Π΅ Π΄Π²ΡƒΡ… ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов: Ρ„Π°ΠΌΠΈΠ»ΠΈΠΈ ΠΈ ΠΈΠΌΠ΅Π½ΠΈ. На ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд каТСтся, Ρ‡Ρ‚ΠΎ Π·Π°Π΄Π°Ρ‡Π° Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ просто:

Однако этот Π²Ρ€ΠΎΠ΄Π΅ Π±Ρ‹ Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ рядом скрытых нСдостатков:

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ТСсткого кодирования ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… элСмСнтов. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… для ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ, прСдставлСниС, за­прос ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ‚. ΠΏ. Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π² строго ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ мСстС ΠΈ Π±Ρ‹Ρ‚ΡŒ доступны ΠΈΠ· любой Ρ‚ΠΎΡ‡ΠΊΠΈ прилоТСния. Π’Π°ΠΊΠΈΠΌ мСстом ΠΈ являСтся ΠΏΠ°ΠΊΠ΅Ρ‚. Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΏΠ°ΠΊΠ΅Ρ‚Π°:

ЀактичСски здСсь ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ элСмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ. Π’Π°ΠΆΠ½Π΅ΠΉΡˆΠΈΠ΅ элСмСнты ΠΊΠΎΠ΄Π° прСдставлСны Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅.

Но ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡˆΠ΅ΠΌ исходный Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² Π½Π΅ΠΌ использовались элСмСнты ΠΏΠ°ΠΊΠ΅Ρ‚Π° (ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎΡ‡Π΅Ρ‡Π½Ρ‹ΠΉ синтаксис, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ синтаксису Ρ‚Π°Π±Π»ΠΈΡ†Π°.столбСц):

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ l_name ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ с Π½ΠΎΠ²Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…, Π° для присваивания Π΅ΠΉ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ значСния вызываСтся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ функция этого ΠΆΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ„ΠΎΡ€ΠΌΡƒΠ»Π° построСния ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΈ SQL-запрос вынСсСны ΠΈΠ· ΠΊΠΎΠ΄Π° прилоТСния Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Β«ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Β» для всСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, относящСйся ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ сотруд­никах. Код стал ΠΏΡ€ΠΎΡ‰Π΅ ΠΈ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½Π΅Π΅. Если потрСбуСтся ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρƒ построСния ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΈΠ»ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…, достаточно внСсти ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΒ­ΡŽΡ‰ΠΈΠ΅ измСнСния Π² ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΈΠ»ΠΈ Ρ‚Π΅Π»ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊΠΎΠ΄.

РСализация employee_pkg выглядит Ρ‚Π°ΠΊ:

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ пСрСчислСны Π²Π°ΠΆΠ½Ρ‹Π΅ элСмСнты этого ΠΊΠΎΠ΄Π°.

Π‘Ρ‚Ρ€ΠΎΠΊΠΈΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅
3-11Ѐункция-Β«ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠ°Β» для опрСдСлСния Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ Β«Π€ΠΠœΠ˜Π›Π˜Π―, ИМЯ»
13-27Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ запрос Π½Π° Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ ΠΎΠ΄Π½ΠΎΠΉ строки, выполняСмый с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ нСявного курсора
18Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ fullname, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ Π΄Π²ΡƒΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈΠΌΠ΅Π½ΠΈ

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΌΡƒ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡŽ синтаксиса ΠΈ структуры ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², слС­дуСт ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²:

ΠŸΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Π²Ρ‹ Ρ€Π΅ΡˆΠ°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ· Π΅Π³ΠΎ элСмСнтов Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±Ρ‰ΠΈΠΌΠΈ, Π° ΠΊΠ°Β­ΠΊΠΈΠ΅ β€” ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΌΠΈ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‚Π΅Π»ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… схСм/Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для сокрытия Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π­Ρ‚ΠΎ особСнно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для изоляции ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² прилоТСния β€” Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠ΄Π°, зависящих ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, часто ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΡ…ΡΡ структур Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΎΠ±Β­Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ.

На Ρ€Π°Π½Π½ΠΈΡ… стадиях развития ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Ρ‚Π΅Π»Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Π²ΠΈΠ΄Π΅ Β«Π·Π°Π³Π»ΡƒΡˆΠ΅ΠΊΒ» с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ объСмом ΠΊΠΎΠ΄Π°, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌ для компиляции ΠΏΠ°ΠΊΠ΅Ρ‚Π°. Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠ΅ΠΌ позволяСт ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° интСрфСйсах ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΈΡ… Π²Π·Π°ΠΈΠΌΠ½Ρ‹Ρ… связях.

Π’Π°ΠΊΠΆΠ΅ сущСствуСт концСпция сСансового постоянства. Если я ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽΡΡŒ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Oracle (создаю сСанс) ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая присваиваСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, объявлСнной Π² спСцификации ΠΈΠ»ΠΈ Ρ‚Π΅Π»Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ всСх входящих Π² Π½Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ), Ρ‚ΠΎ эта пСрСмСнная ΠΏΡ€ΠΎΠ΄ΠΎΠ»Β­ΠΆΠ°Π΅Ρ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° всСм протяТСнии сСанса ΠΈ сохраняСт своС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ²ΡˆΠ΅ΠΉ присваиваниС.

ИмСнно ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ структур Π΄Π°Π½Π½Ρ‹Ρ… с сСансовым постоянством Π² языкС PL/SQL.

ГрафичСскоС прСдставлСниС приватности

Различия ΠΌΠ΅ΠΆΠ΄Ρƒ общСдоступными ΠΈ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΌΠΈ элСмСнтами ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π΄Π°ΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ PL/SQL бСспрСцСдСнтныС срСдства управлСния структурами Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ. Грэди Π‘ΡƒΡ‡ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ» Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ срСдство описания этих аспСктов ΠΏΠ°ΠΊΠ΅Ρ‚Π° (ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±Ρ‹Π»ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ СстСствСнно Π½Π°Π·Π²Π°Π½ΠΎ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠΎΠΉ Π‘ΡƒΡ‡Π°).

ВзглянитС Π½Π° рис. 1. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° надписи «ВнутрСнняя Ρ‡Π°ΡΡ‚ΡŒΒ» ΠΈ Β«Π’Π½Π΅ΡˆΠ½ΡΡ Ρ‡Π°ΡΡ‚ΡŒΒ». ΠŸΠ΅Ρ€Π²Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ содСрТит Ρ‚Π΅Π»ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° (внутрСнняя рСализация ΠΏΠ°ΠΊΠ΅Ρ‚Π°), Π° вторая β€” всС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, написанныС Π²Π°ΠΌΠΈ ΠΈ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰ΠΈΠ΅ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΏΠ°ΠΊΠ΅Ρ‚Π° (внСшниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹).

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ Π² oracle. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ Π² oracle. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ Π² oracle. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ Π² oracle. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ Π² oracle

Рис. 1. Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° Π‘ΡƒΡ‡Π° с общСдоступными ΠΈ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΌΠΈ элСмСнтами ΠΏΠ°ΠΊΠ΅Ρ‚Π°

НСсколько Π²Ρ‹Π²ΠΎΠ΄ΠΎΠ², ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΈΠ· Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ Π‘ΡƒΡ‡Π°:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠŸΡ€Π°Π²ΠΈΠ»Π° построСния ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² (package) Π² PL/SQL Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ Π² oracle. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ Π² oracle. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ Π² oracle. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ Π² oracle. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ Π² oracleΠ‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° PL/SQL выглядит ΠΎΡ‡Π΅Π½ΡŒ просто, Π½ΠΎ эта простота ΠΎΠ±ΠΌΠ°Π½Ρ‡ΠΈΠ²Π°. Π₯отя синтаксис ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π° построСния ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π²Ρ‹ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΡ‡Π΅Π½ΡŒ быстро, ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ нюансов Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈΠ΄Π΅Ρ‚ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ сразу. Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΡ€Π°Π²ΠΈΠ»Π° построСния ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², Π° Π΄Π°Π»Π΅Π΅ рассказываСтся, Π² ΠΊΠ°ΠΊΠΈΡ… ситуациях ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ особСнно эффСктивны.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Π³ΠΎ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда β€” Ρ‚Π΅Π»ΠΎ. ΠŸΡ€ΠΈ этом Π½ΡƒΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ элСмСнты ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Π² спСцификации, Π° ΠΊΠ°ΠΊΠΈΠ΅ скрыты Π² Ρ‚Π΅Π»Π΅. Π’ ΠΏΠ°ΠΊΠ΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… Oracle Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π°.

БпСцификация ΠΏΠ°ΠΊΠ΅Ρ‚Π° PL/SQL

БпСцификация ΠΏΠ°ΠΊΠ΅Ρ‚Π° содСрТит список всСх доступных элСмСнтов ΠΈ прСдоставляСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ для использования ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π² прилоТСниях. Π•Π΅ часто Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ интСрфСйсом β€” API (Application Programming Interface). Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ описанныС Π² спСцификации элСмСнты, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ ΠΊΠΎΠ΄, находящийся Π² Ρ‚Π΅Π»Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π°.

ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ спСцификации ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ:

Для дСмонстрации этих ΠΏΡ€Π°Π²ΠΈΠ» рассмотрим ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΏΠ°ΠΊΠ΅Ρ‚Π°:

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΡ‡Ρ‚ΠΈ Ρ‚Π°ΠΊΡƒΡŽ ΠΆΠ΅ структуру спСцификации, ΠΊΠ°ΠΊ Ρ€Π°Π·Π΄Π΅Π» объяв­лСний Π±Π»ΠΎΠΊΠ° PL/SQL. ЕдинствСнноС ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ спСцификация Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Π’Π΅Π»ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°

Π’Π΅Π»ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° содСрТит вСсь ΠΊΠΎΠ΄, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ спСцификации ΠΏΠ°ΠΊΠ΅Ρ‚Π°. Оно Π½Π΅ являСтся стопроцСнтно Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌ; ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ спСцификаций ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π±Π΅Π· Ρ‚Π΅Π»Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ «Когда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹Β». Π’Π΅Π»ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли истинны хотя Π±Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… условий:

Π‘ΠΎ структурной Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Ρ‚Π΅Π»ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹. НСсколько ΠΏΡ€Π°Π²ΠΈΠ», спСцифичСских для Ρ‚Π΅Π» ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²:

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° моя рСализация Ρ‚Π΅Π»Π° favorites_pkg :

Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ‚Π΅Π» ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ «Когда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹Β».

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²

ΠŸΠ°ΠΊΠ΅Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ структуры Π΄Π°Π½Π½Ρ‹Ρ…, ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‰ΠΈΠ΅ΡΡ Π½Π° протяТСнии всСго сС­анса (см. Ρ€Π°Π·Π΄Π΅Π» Β«Π Π°Π±ΠΎΡ‚Π° с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π°Β»). Когда Π² Ρ…ΠΎΠ΄Π΅ сСанса Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ происходит ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ ΠΏΠ°ΠΊΠ΅Ρ‚Ρƒ (вызываСтся объявлСнная Π² Π½Π΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, считываСтся ΠΈΠ»ΠΈ за­писываСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΉ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ Ρ‚ΠΈΠΏ), Oracle ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ, выполняя ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия:

Oracle выполняСт всС эти дСйствия Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π·Π° сСанс ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π²ΠΎΠ·Β­Π½ΠΈΠΊΠ½Π΅Ρ‚ нСпосрСдствСнная Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² этой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

ΠŸΠ°ΠΊΠ΅Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ Π² Ρ…ΠΎΠ΄Π΅ сСанса, Ссли ΠΎΠ½ Π±Ρ‹Π» ΠΏΠ΅Ρ€Π΅Β­ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° послСднСго использования ΠΈΠ»ΠΈ Π±Ρ‹Π» Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ сброс состояния всСго сСанса, Π½Π° Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ошибка ORA-04068.

PL/SQL автоматичСски опрСдСляСт, ΠΊΠΎΠ³Π΄Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΊΠΎΠ΄ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΎΠ½- Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π°. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ нСобходимости Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ явно ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌΠΈ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·. Когда слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π»? НиТС описаны Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹.

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ слоТной Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ прямо Π² ΠΊΠΎΠΌΠ°Π½Β­Π΄Π΅ объявлСния. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Ρƒ этого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π΅ΡΡ‚ΡŒ нСсколько ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… нСдостатков:

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ рядом прСимущСств ΠΏΠ΅Ρ€Π΅Π΄ присваиваниСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π’ частности, Π² исполняСмом Ρ€Π°Π·Π΄Π΅Π»Π΅ Π²Ρ‹ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚Π΅ ΠΏΠΎΠ»Π½ΠΎΠΉ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒΡŽ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ, структурС ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π²Π°ΡˆΠΈΡ… дСйствий, Π° ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΈΡΒ­ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π°.

ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ статичСской сСансовой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ

Другая ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π° Π² ΠΏΠ°ΠΊΠ΅Ρ‚ β€” ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ статичСской ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΡΡ‚Π°ΡŽΡ‰Π΅ΠΉΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π° протяТСнии сСанса. Если значСния Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ, Π·Π°Ρ‡Π΅ΠΌ ΠΌΠΈΡ€ΠΈΡ‚ΡŒΡΡ с лишними Π·Π°Ρ‚Ρ€Π°Ρ‚Π°ΠΌΠΈ Π½Π° запросы ΠΈΠ»ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ вычислСниС этих Π΄Π°Π½Π½Ρ‹Ρ…?

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ ΠΌΠ΅Ρ€Ρ‹ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ информация Ρ‡ΠΈΡ‚Π°Π»Π°ΡΡŒ Π² сСансС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π» становится ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Β­Π½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ.

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ приходится ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π²Π°ΠΆΠ½Ρ‹ΠΉ компромисс ΠΌΠ΅ΠΆΠ΄Ρƒ Π·Π°Ρ‚Ρ€Π°Ρ‚Π°ΠΌΠΈ памяти ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… мощностСй. ΠšΡΡˆΠΈΡ€ΡƒΡ Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ врСмя Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Для этого Π΄Π°Π½Π½Ρ‹Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Β«Π±Π»ΠΈΠΆΠ΅Β» ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ, Π² области PGA ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сСанса. ΠŸΡ€ΠΈ 1000 сСансах Π² систСмС сущСствуСт 1000 ΠΊΠΎΠΏΠΈΠΉ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ сниТаСт Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° процСссор, Π½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹ памяти β€” ΠΏΡ€ΠΈΡ‡Π΅ΠΌ ΠΈΠ½ΠΎΠ³Π΄Π° вСсьма Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ.

Π—Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΏΠΎ этой Ρ‚Π΅ΠΌΠ΅ ΠΎΠ±Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ΡΡŒ ΠΊ Ρ€Π°Π·Π΄Π΅Π»Ρƒ Β«ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ статичСских Π΄Π°Π½Π½Ρ‹Ρ… сСанса для ускорСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния».

ΠŸΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Ρ… эффСктов ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ присваивания Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… (ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π»ΡŽΠ±Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ…, Ссли ΡƒΠΆ Π½Π° Ρ‚ΠΎ пошло). Π­Ρ‚Π° защитная ΠΌΠ΅Ρ€Π° ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ хаос ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° ΠΈ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρƒ Ρƒ программи­стов, Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΡ…ΡΡ сопровоТдСниСм. Код ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ сконцСнтрирован Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π΅. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ этот ΠΊΠΎΠ΄ выполняСтся Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π· пытаСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ элСмСнт ΠΏΠ°ΠΊΠ΅Ρ‚Π°. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΈΠ΄Π΅Ρ‚ΡŒ слоТа Ρ€ΡƒΠΊΠΈ, ΠΏΠΎΠΊΠ° ΠΏΠ°ΠΊΠ΅Ρ‚ выполняСт высокозатратныС вычислСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ вынСсти Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈΠ»ΠΈ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Ρ‹ прилоТСния. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ слСдуСт ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ:

Если ваши трСбования ΠΊ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ ΠΎΡ‚ прСдставлСнных Π½Π°ΠΌΠΈ, рассмотритС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρƒ для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π° β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сгруппируйтС стартовыС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ прилоТСния. ΠŸΡ€ΠΈΡΠ²ΠΎΠΉΡ‚Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ имя (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, init_environment); Π·Π°Ρ‚Π΅ΠΌ Π² Π½ΡƒΠΆΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ процСсса ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ init_environment для настройки сСанса.

Ошибки ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π² нСсколько этапов: объявлСниС Π΄Π°Π½Π½Ρ‹Ρ…, присваива­ниС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π° (Ссли ΠΎΠ½ при­сутствуСт). А Ссли ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ ошибка, приводящая ΠΊ сбою процСсса ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ? ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ, Π΄Π°ΠΆΠ΅ Ссли ΠΏΠ°ΠΊΠ΅Ρ‚ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ свои дСйствия ΠΏΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠΌΠ΅Ρ‡Π°Π΅Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΊΠ°ΠΊ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΈ Π½Π΅ пытаСтся снова Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ стартовый ΠΊΠΎΠ΄ Π² этом сСансС. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² этом, рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚:

Допустим, я ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽΡΡŒ ΠΊ SQL*Plus ΠΈ ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ valerr.get (ΠΏΠ΅Ρ€Β­Π²Ρ‹ΠΉ Ρ€Π°Π· Π² этом сСансС). Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ я ΡƒΠ²ΠΈΠΆΡƒ:

Как интСрСсно! Π‘Ρ‚Ρ€ΠΎΠΊΠ° Β«Before I show you v. Β» Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ выводится; Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, эта ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π΅ выполняСтся. Ошибка происходит ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½ΠΎ Π½Π΅ ΠΏΡ€ΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΈ всСх ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π²Ρ‹Π·ΠΎΠ²Π°Ρ…. ΠŸΠ΅Ρ€Π΅Π΄ Π½Π°ΠΌΠΈ ΠΎΠ΄Π½Π° ΠΈΠ· классичСских «нС­воспроизводимых ошибок», Π° Π² ΠΌΠΈΡ€Π΅ PL/SQL это типичная ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ: сбой Π² Ρ…ΠΎΠ΄Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π°.

ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ошибки ΡƒΡΠ»ΠΎΠΆΠ½ΡΡŽΡ‚ диагностику. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ риск Ρ‚Π°ΠΊΠΈΡ… ошибок ΠΈ ΡƒΠΏΡ€ΠΎΒ­ΡΡ‚ΠΈΡ‚ΡŒ ΠΈΡ… ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅, Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ присваиваниС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π», Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π΄Π΅Π» ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΌΠΎΠ³ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ошибки ΠΈ ΡΠΎΠΎΠ±Ρ‰Π°Ρ‚ΡŒ ΠΎΠ± ΠΈΡ… вСроятных ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°Ρ…:

Π’Ρ‹ Π΄Π°ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ структуру ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π³Ρ€ΡƒΠΏΠΏΡ‹ Π½Π΅ Π·Π°Π±Ρ‹Π²Π°Π»ΠΈ ΠΎΠ± этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Когда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ (package) PL/SQL Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ Π² oracle. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ Π² oracle. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ Π² oracle. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ Π² oracle. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ Π² oracleΠ˜Ρ‚Π°ΠΊ, Π² ΠΏΡ€ΠΎΡˆΠ»Ρ‹Ρ… ΠΌΠΎΠΈΡ… Π±Π»ΠΎΠ³Π°Ρ… ΠΌΡ‹ рассмотрСли синтаксис, основныС ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΈ Π½ΡŽΠ°Π½ΡΡ‹ построСния ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ списку ситуаций, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ PL/SQL слСдуСт ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ, ΠΈ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈΡ… Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ.

НиТС каТдая ΠΈΠ· этих ΠΏΡ€ΠΈΡ‡ΠΈΠ½ рассматриваСтся Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ.

Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ

ВмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ SQL, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ интСрфСйс ΠΊ этим ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ. Π­Ρ‚ΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· самых Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΡ‡ΠΈΠ½ для по­строСния ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², Π½ΠΎ ΠΎΠ½Π° примСняСтся ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅Π΄ΠΊΠΎ.

ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ PL/SQL вмСсто ΠΊΠΎΠΌΠ°Π½Π΄ SQL ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² свои прилоТСния Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ, протСстированный ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСт всю Ρ€Π°Π±ΠΎΡ‚Ρƒ Π·Π° Π½ΠΈΡ…; Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ add (ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π½ΡƒΡŽ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ записСй), которая Π²Ρ‹Π΄Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ INSERT ΠΈ слСдуСт стандартным ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ ΠΎΠ΄Π½ΠΎΠΉ записи ΠΏΠΎ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠΌΡƒ ΠΊΠ»ΡŽΡ‡Ρƒ ΠΈ Ρ€Π°Π·Β­Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Π΅ курсоры для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ стандартных запросов ΠΊ структурС Π΄Π°Π½Π½Ρ‹Ρ… (ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΈΠ»ΠΈ «бизнСс-ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒΒ» ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†).

Если Π²Ρ‹ Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚Π΅ этот ΠΏΡƒΡ‚ΡŒ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ, ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Ρ‚Ρ€ΠΈ ΠΈΠ»ΠΈ ΡˆΠ΅ΡΡ‚ΡŒ Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† для получСния Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ…. Они просто Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ Π½ΡƒΠΆΠ½Ρ‹ΠΉ курсор, Π° Π°Π½Π°Π»ΠΈΠ· Π΄Π°Π½Π½Ρ‹Ρ… оставляСтся ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ. Им Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ вставки строка ΡƒΠΆΠ΅ сущСствуСт β€” ΠΏΡ€ΠΎΒ­Ρ†Π΅Π΄ΡƒΡ€Π° ΡƒΠΆΠ΅ содСрТит всю Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ.

ВСроятно, самоС ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠ΅ прСимущСство Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ структуры Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ΄Π° прилоТСния сводятся ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΡƒ ΠΈ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ. Π§Π΅Π»ΠΎΠ²Π΅ΠΊ, Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π·Π½Π°ΡŽΡ‰ΠΈΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ, вносит Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ измСнСния Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π΅, Π° эти измСнСния Π·Π°Ρ‚Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ автоматичСски Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π½Π° всСх ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, зависящиС ΠΎΡ‚ этого ΠΏΠ°ΠΊΠ΅Ρ‚Π°.

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ использованиС ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² отраТаСтся Π½Π° ΠΊΠΎΠ΄Π΅. Π€Π°ΠΉΠ» givebonusi. sp Π½Π° сайтС ΠΊΠ½ΠΈΠ³ΠΈ содСрТит ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ, которая начисляСт ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΏΡ€Π΅ΠΌΠΈΠΈ всСм Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠ°ΠΌ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΡ‚Π΄Π΅Π»Π°, β€” Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ стаТ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠ° Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ составляСт Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 6 мСсяцСв. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ части ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ give_bonus с ΠΊΠΎΠ΄ΠΎΠΌ SQL (полная рСализация содСрТится Π² Ρ„Π°ΠΉΠ»Π΅ givebonusi.sp ):

Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅ с Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ содСрТится Π² Ρ„Π°ΠΉΠ»Π΅ givebonus2.sp :

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΎΠ±ΡŠΡΡΠ½ΡΡŽΡ‚ΡΡ измСнСния, внСсСнныС Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ вСрсии.

Π’ Ρ†Π΅Π»ΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ SQL Π±Ρ‹Π»ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ‹ Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… для ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ использования. Π’ ΠΌΠΎΠ΅ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ SQL ΠΈ способствуСт Π±ΠΎΠ»Π΅Π΅ эффСктивному написанию Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ (ΠΈΠ»ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅) Ρ‚Π°ΠΊΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π½ΠΈ Π² ΠΊΠΎΠ΅ΠΉ ΠΌΠ΅Ρ€Π΅ Π½Π΅ являСтся Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ, я ΠΈ понимаю, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»Π΅ΠΉ вряд Π»ΠΈ за­хотят ΠΈΠ»ΠΈ смогут ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ «чистый» инкапсулированный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄. Однако ΠΌΠ½ΠΎΠ³ΠΈΠ΅ прСимущСства инкапсуляции Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ Π±Π΅Π· ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ стиля программирования. Как ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ я Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ:

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ТСсткого кодирования Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ²

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ всСвозмоТныС Β«Π²ΠΎΠ»ΡˆΠ΅Π±Π½Ρ‹Π΅ значС­ния» β€” Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ особый смысл для систСмы. НапримСр, это ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΠ΄Ρ‹ Ρ‚ΠΈΠΏΠΎΠ² ΠΈΠ»ΠΈ Π³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹Π΅ значСния для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ скаТут Π²Π°ΠΌ, Ρ‡Ρ‚ΠΎ Π²ΠΎΠ»ΡˆΠ΅Π±Π½Ρ‹Π΅ значСния Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ. Β«Π’ ΠΌΠΎΠ΅ΠΌ балансС всСгда Π±ΡƒΠ΄Π΅Ρ‚ Ρ€ΠΎΠ²Π½ΠΎ 25 ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉΒ», β€” Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎΠ΄ΠΈΠ½. Β«Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠ°Ρ компания всСгда Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ATLAS HQΒ», β€” клянСтся Π΄Ρ€ΡƒΠ³ΠΎΠΉ. НС Π²Π΅Ρ€ΡŒΡ‚Π΅ клятвам ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ фиксируйтС ΠΈΡ… Π² своих ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…. Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ IF:

Π’ΠΎΡ‚, ΠΊΡ‚ΠΎ ΠΏΠΈΡˆΠ΅Ρ‚ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, сам Π½Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ Π½Π° нСприятности. Π’Π°ΡˆΠ° Тизнь Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ упростится, Ссли Π²Ρ‹ создадитС ΠΏΠ°ΠΊΠ΅Ρ‚ с ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ константами:

Π‘ Ρ‚Π°ΠΊΠΈΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ Π΄Π²Π΅ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ IF ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄:

Если Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ ΠΈΠ· Β«Π²ΠΎΠ»ΡˆΠ΅Π±Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉΒ» измСнится, достаточно ΠΈΠ·ΠΌΠ΅Β­Π½ΠΈΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ константу Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π΅. Π’Π½ΠΎΡΠΈΡ‚ΡŒ измСнСния Π² ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… модулях Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈΠ· Ρ‚Π΅Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я Ρ€Π΅Ρ†Π΅Π½Π·ΠΈΡ€ΠΎΠ²Π°Π» (ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Ρ‚Π΅Ρ…, Ρ‡Ρ‚ΠΎ я написал), ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π»ΠΈΡΡŒ ТСстко Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Β«Π²ΠΎΠ»ΡˆΠ΅Π±Π½Ρ‹Π΅ значСния». Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ случаС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Π²Π½ΠΎΡΠΈΡ‚ΡŒ мноТСствСнныС измСнСния Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ β€” ΠΊΠ°ΠΊ Π² Ρ„Π°Π·Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ρ‚Π°ΠΊ ΠΈ Π² Ρ„Π°Π·Π΅ сопровоТдСния. Иногда это создаСт ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΈΠ½ΠΎΠ³Π΄Π° оборачиваСтся сущим ΠΊΠΎΡˆΠΌΠ°Ρ€ΠΎΠΌ; я Π½Π΅ ΠΌΠΎΠ³Ρƒ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ словами, насколько Π²Π°ΠΆΠ½ΠΎ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС Β«Π²ΠΎΠ»ΡˆΠ΅Π±Π½Ρ‹Π΅ значС­ния» Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ….

НаконСц, Ссли Π²Π°ΠΌ довСдСтся Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΡŒΠ½Ρ‹Π΅ значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ планируСтся ΡΠΊΡ€Ρ‹Ρ‚ΡŒ Π·Π° константами, ΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСвСроятныС значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ вряд Π»ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ состояния: успСх ΠΈΠ»ΠΈ Π½Π΅ΡƒΠ΄Π°Ρ‡Π°? Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ значСния Ρ‚Π°ΠΊΠΈΡ… Ρ„Π»Π°Π³ΠΎΠ² β€” 0 ΠΈ 1, S ΠΈ F ΠΈ Ρ‚. Π΄. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Ρƒ Ρ‚Π°ΠΊΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π΅ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ нСдостаток: ΠΎΠ½ΠΈ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈ ΠΈ ΠΈΠ½Ρ‚ΡƒΠΈΒ­Ρ‚ΠΈΠ²Π½ΠΎ понятны, поэтому Ρƒ нСдисциплинированного программиста Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ соблазн Β«ΡΠΌΡƒΡ…Π»Π΅Π²Π°Ρ‚ΡŒΒ» ΠΈ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ Π² ΠΊΠΎΠ΄Π΅. Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Π‘ΠΊΠΎΡ€Π΅Π΅ всСго, с Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Π²Ρ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½Π΅Ρ‚Π΅ΡΡŒ с использованиСм big_stuff ΡΠ»Π΅Β­Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π²ΠΈΠ΄Π°:

Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Ссли спСцификация ΠΏΠ°ΠΊΠ΅Ρ‚Π° выглядит Ρ‚Π°ΠΊ:

Π²Ρ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄:

Он выглядит просто Π½Π΅ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎ.

УстранСниС нСдостатков встроСнных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

ВмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ страницы ΠΊΠ½ΠΈΠ³ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ, я ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡŽ Ρ„Π°ΠΉΠ»Ρ‹ Π½Π΅ΡΠΊΠΎΠ»ΡŒΒ­ΠΊΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½Ρ‹Ρ… Π½Π° сайтС ΠΊΠ½ΠΈΠ³ΠΈ. Π­Ρ‚ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ использованиС ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ ряд Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… возмоТностСй. Π― Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ *.pkg Π½Π° сайтС β€” Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π² Π½ΠΈΡ… ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Π²Π°ΡˆΠΈΡ… прилоТС­ниях. Π‘ Ρ‡Π΅Π³ΠΎ стоит Π½Π°Ρ‡Π°Ρ‚ΡŒ?

Π“Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° логичСски связанных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

Если ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° содСрТит дСсяток ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, связанных с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ»ΠΈ аспСктом вашСго прилоТСния, размСститС ΠΈΡ… Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ этим ΠΊΠΎΠ΄ΠΎΠΌ (ΠΈ Π΅Π³ΠΎ поиск). Π­Ρ‚ΠΎ особСнно Π²Π°ΠΆΠ½ΠΎ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΒ­Π²Π°Π½ΠΈΠΈ бизнСс-ΠΏΡ€Π°Π²ΠΈΠ» прилоТСния, Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… слСдуСт ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°ΠΆΠ½Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°:

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π±Ρ€Π°Ρ‚ΡŒΡΡ Π·Π° построСниС прилоТСния, сконструируйтС Π½Π°Π±ΠΎΡ€ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΈΠ½ΠΊΠ°ΠΏΒ­ΡΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… всС Π΅Π³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°. Иногда эти ΠΏΡ€Π°Π²ΠΈΠ»Π° ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ большСго ΠΏΠ°ΠΊΠ΅Ρ‚Π° β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ°ΠΊΠ΅Ρ‚Π° инкапсуляции Ρ‚Π°Π±Π»ΠΈΡ†. Π’ Π΄Ρ€ΡƒΠ³ΠΈΡ… случаях ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ содСрТит Π½ΠΈΡ‡Π΅Π³ΠΎ, ΠΊΡ€ΠΎΠΌΠ΅ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… ΠΏΡ€Π°Π²ΠΈΠ», ΠΊΠ°ΠΊ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅ вся «логичСски связанная Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΒ» ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ бизнСс­правилам. Допустим, ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ возмоТности встроСнных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ PL/ SQL для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со строками. ВмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ 12 Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, я создаю ΠΏΠ°ΠΊΠ΅Ρ‚, Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽ всС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² этом ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ ΠΈ ΡΠΎΠΎΠ±Ρ‰Π°ΡŽ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ, ΠΊΠ°ΠΊ ΠΎΠ±Β­Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ статичСских Π΄Π°Π½Π½Ρ‹Ρ… сСанса для ускорСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ° прилоТСния посрСдством ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ статичСских Π΄Π°Π½Π½Ρ‹Ρ… (Π±Π΅Π· ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹Ρ… запросов). Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… уровнях. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ спискС я ΠΏΡ€ΠΈΠ²ΠΎΠΆΡƒ нСсколько ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΊΠΎΠ΄Π°, доступных Π½Π° сайтС ΠΊΠ½ΠΈΠ³ΠΈ.

ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Π±Π°Π·Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² β€” всСго лишь ΠΎΠ΄Π½Π° ΠΈΠ· разновидностСй ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ, до­ступных для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² PL/SQL.

Если Π²Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ уровня ΠΏΠ°ΠΊΠ΅Ρ‚Π°, ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΡΡˆΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сСанса, ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‰Π΅Π³ΠΎΡΡ ΠΊ ΠΏΠ°ΠΊΠ΅Ρ‚Ρƒ (Π² глобальной области PGA Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Oracle). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ссли кэш Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 2 ΠœΠ±Π°ΠΉΡ‚ ΠΈ Π² систСмС сущСствуСт 1000 ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… сСансов, Π²Ρ‹ расходуСтС 2 Π“Π±Π°ΠΉΡ‚ памяти своСй систСмы β€” ΠΊΡ€ΠΎΠΌΠ΅ всСй ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ памяти, расходуСмой Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ….

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² PL/SQL

ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹ языка PL/SQL

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π°

ΠŸΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

ΠŸΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ PL/SQL, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ описаниС:

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² спискС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ:

Для опрСдСлСния соотвСтствия ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈ фактичСскими ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ прСдусмотрСны Π΄Π²Π° Ρ‚ΠΈΠΏΠ° Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ:

ΠŸΡ€ΠΈ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ порядок Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈ фактичСских ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ.

ΠŸΡ€ΠΈ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ порядок указания ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ значСния, Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° указываСтся имя Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΈ символ =>. Бписок ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΎΠ±Π° Ρ‚ΠΈΠΏΠ° Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, Π½ΠΎ имСнованная нотация располагаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΊΠΎΠ½Ρ†Π΅ списка.

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π΅ части:

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ описаниС:

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² спискС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ:

ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹Π΅ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ΄Π½ΠΈΡ… ΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ дСйствий Π½Π°Π΄ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ². Для ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹Ρ… ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ компилятор Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ с ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΌ списком фактичСских ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ просмотрит всС ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹Π΅ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°. И Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹Ρ… ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π² Π΄Π°Π½Π½ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅ Π½Π΅Ρ‚, Ρ‚ΠΎ компилятор ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ поиск Π²ΠΎ внСшнСм Π±Π»ΠΎΠΊΠ΅.

РСкурсивныС ΠΈ Π²Π·Π°ΠΈΠΌΠ½ΠΎ рСкурсивныС Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ

ΠŸΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ рСкурсивном Π²Ρ‹Π·ΠΎΠ²Π΅ :

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ функция fibonati1 Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ рСкурсии:

ВмСсто рСкурсивного способа ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ способ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠ΅Π½Π΅Π΅ наглядСн, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΈ мСньшС памяти, ΠΈ быстрСС выполняСтся.

Π’Π°ΠΊ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ функция fibonati2 Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ способом:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *