ОблоТка канала

Oracle DeveloperπŸ‘¨πŸ»β€πŸ’»

ВсС ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π² Π‘Π£Π‘Π” "Oracle" SQL, PL/SQL, оптимизация, Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, сСртификации ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

Oracle DeveloperπŸ‘¨πŸ»β€πŸ’»

5 Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄
ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π²
Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ SQL vs Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ PL/SQL ВсСм ΠΏΡ€ΠΈΠ²Π΅Ρ‚! Π’Ρ‹ ΡƒΠΆΠ΅ Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°Π»ΠΈΡΡŒ ΠΎ различиях ΠΌΠ΅ΠΆΠ΄Ρƒ стандартными SQL ΠΈ PL/SQL функциями? «А Ρ€Π°Π·Π²Π΅, ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ различия?Β» - спросит Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ. ⚠️ Π”Π°, это Ρ€Π°Π·Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π²Π΅Π΄ΡƒΡ‚ сСбя ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ. Π’ Oracle Database, ΠΊΠ°ΠΊ извСстно, Π΅ΡΡ‚ΡŒ Π΄Π²Π° Ρ€Π°Π·Π½Ρ‹Ρ… Π΄Π²ΠΈΠΆΠΊΠ°: для выполнСния SQL-запросов ΠΈ для PL/SQL-ΠΊΠΎΠ΄Π°. Как всС Π·Π½Π°ΡŽΡ‚, слСдуСт ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ Π»ΠΈΡˆΠ½ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ этими Π΄Π²ΠΈΠΆΠΊΠ°ΠΌΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ Ρ‚Π°ΠΊΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ происходило ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ мСньшС, для SQL ΠΈ PLSQL ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ свои Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ стандартных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, описанных Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. Они Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ ΠΈ Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΌΡ‹ ΠΈΡ… Π½Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π°Π΅ΠΌ, НапримСр: declare my_var integer; begin select nvl(c.a, c.b) into my_var from my_table c; -- Π’Ρ‹Π·ΠΎΠ² SQL-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ my_var := nvl(my_var, 0); -- Π’Ρ‹Π·ΠΎΠ² PL/SQL-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ end;
/
Π—Π°Ρ‡Π΅ΠΌ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎ Ρ€Π°Π·Π½Ρ‹Ρ… функциях? ΠŸΡ€ΠΈΡ‡ΠΈΠ½ нСсколько: 1️⃣ Π’ PL/SQL ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ· SQL. НапримСр, Π²Ρ‹ Π½Π΅ смоТСтС Π² PL/SQL-ΠΊΠΎΠ΄Π΅ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ SQL-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ NVL2 ΠΈ DECODE. Π’ΠΈΠ΄ΠΈΠΌΠΎ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π½Π΅ стали Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² состав языка эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ посчитав достаточно ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ CASE. НаличиС ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ SYS.STANDARD. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π½Π° язык PL/SQL ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ² Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠΌ PL/SQL-Π±Π»ΠΎΠΊΠ΅. 2️⃣ Π’ SQL ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ "своСй" Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ PL/SQL-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°ΠΊΠ΅Ρ‚ SYS.STANDARD. НапримСр:
select sys.standard.sqlcode from dual
Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚ Ρ‚ΠΎ самоС ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ контСкста. Но Π½Π΅ всякая PL/SQL-функция доступна Π² SQL ΠΈΠ·-Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ Π² ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Ρ‚ΠΈΠΏΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ… (Π”Π²ΠΈΠΆΠΎΠΊ SQL Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ‚ ΠΎ Ρ‚ΠΈΠΏΠ΅ BOOLEAN). 3️⃣ ΠžΠ΄Π½ΠΎΠΈΠΌΡ‘Π½Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² SQL ΠΈ PL/SQL-Π΄Π²ΠΈΠΆΠΊΠ°Ρ… ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹. К соТалСнию, Ρ‚Π°ΠΊΠΎΠ΅ ΠΈΠ½ΠΎΠ³Π΄Π° встрСчаСтся, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΈΠ· Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ Π²Π½ΡƒΡ‚Ρ€ΠΈ Oracle Database писали ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π»ΠΈ Ρ€Π°Π·Π½Ρ‹Π΅ люди. Π― натыкался Π½Π° различия Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°Ρ… для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ TO_CHAR(left number, format varchar2, parms varchar2). Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ примСняли Ρ€Π°Π·Π½ΠΎΠ΅ Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ ΠΈ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ усилия, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π΅Π·Π΄Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ. βœ…ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π² коммСнтариях, Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Π»ΠΎΡΡŒ Π»ΠΈ Π²Π°ΠΌ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅. Автор: @alexeionin #Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
Oracle DeveloperπŸ‘¨πŸ»β€πŸ’»

ΠŸΠ°ΠΊΠ΅Ρ‚ sys.standard Π”ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎ интСрСсный систСмный ΠΏΠ°ΠΊΠ΅Ρ‚. Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ Π² сСбС опрСдСлСния Ρ‚ΠΈΠΏΠΎΠ², Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‡Π΅Π³ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ. МоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, всС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ языка PL/SQL =) Π‘Ρ‚Π°Π½Π΅ΠΌ понятно, Ρ‡Ρ‚ΠΎ Π·Π° Ρ‚ΠΈΠΏ STRING ΠΈΠ»ΠΈ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, VARRAY. Π§Π΅ΠΌ ΠΎΠ½ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ VARCHAR2. Π’Π°ΠΊ ΠΆΠ΅ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π·Π°Π±Π°Π²Π½Ρ‹Π΅ числовыС Ρ‚ΠΈΠΏΡ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ SIGNTYPE. Π—Π°Π±Ρ‹Π»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π΅ΡΡ‚ΡŒ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ‚ΠΈΠΏΠ° NO_DATA_FOUND? Π’Π°ΠΌ Π² этот ΠΏΠ°ΠΊΠ΅Ρ‚. Π—Π΄Π΅ΡΡŒ ΠΎΠ½ΠΈ всС пСрСчислСны ΠΈ связаны с ΠΊΠΎΠ΄Π°ΠΌΠΈ ошибок (pragma exception init). Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… вСрсиях Π‘Π£Π‘Π” ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² тСкстС спСцификации ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π·Π°Π±Π°Π²Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ β€œΠ½Π΅ Π²Ρ‹Ρ€ΡƒΠ±ΠΈΡ‚ΡŒ топором”. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π·Π°Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π² Π½Π΅Π³ΠΎ просто для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΊΡ€ΡƒΠ³ΠΎΠ·ΠΎΡ€Π°. #ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹

Telegram