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
#ΡΡΠ½ΠΊΡΠΈΠΈ