рдореИрдВ рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдореЗрдВ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк
рдкреЛрд╕реНрдЯ рдХрд╛ рдПрдХ рдЕрдиреБрд╡рд╛рдж рд▓рд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ Oracle рдХреА рдПрдХ рдЕрдкреНрд░рдпреБрдХреНрдд рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред
рдПрдХ рдлрд▓ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдПрдВред
CREATE TABLE fruits (fruit_name varchar2(30));
рд╣рдо рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рднрд░рддреЗ рд╣реИрдВ: 5 рдХреЗрд▓реЗ, 7 рд╕реЗрдм, 3 рдмреНрд▓реВрдмреЗрд░реАред
INSERT INTO fruits VALUES ( 'banana' );<br> INSERT INTO fruits VALUES ( 'banana' );<br> INSERT INTO fruits VALUES ( 'banana' );<br> INSERT INTO fruits VALUES ( 'banana' );<br> INSERT INTO fruits VALUES ( 'banana' );<br> INSERT INTO fruits VALUES ( 'apple' );<br> INSERT INTO fruits VALUES ( 'apple' );<br> INSERT INTO fruits VALUES ( 'apple' );<br> INSERT INTO fruits VALUES ( 'apple' );<br> INSERT INTO fruits VALUES ( 'apple' );<br> INSERT INTO fruits VALUES ( 'apple' );<br> INSERT INTO fruits VALUES ( 'apple' );<br> INSERT INTO fruits VALUES ( 'blueberry' );<br> INSERT INTO fruits VALUES ( 'blueberry' );<br> INSERT INTO fruits VALUES ( 'blueberry' );
рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╣рдорд╛рд░рд╛ рдлрд╝рдВрдХреНрд╢рди рдХрд┐рддрдиреА рдмрд╛рд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╣рдо рдПрдХ рдЕрдиреБрдХреНрд░рдо рдмрдирд╛рддреЗ рд╣реИрдВред
CREATE SEQUENCE seq START WITH 1;
рд╣рдо рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦреЗрдВрдЧреЗ рдЬреЛ рдлрд▓реЛрдВ рдХреЗ рд░рдВрдЧ (рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░) рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд╕рдВрдХреЗрддрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдиреБрдХреНрд░рдо рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИред
CREATE OR REPLACE FUNCTION get_colour (p_fruit_name IN varchar2)<br> RETURN varchar2<br> IS <br>l_num number;<br> BEGIN <br> SELECT seq.nextval INTO l_num FROM dual;<br><br> CASE p_fruit_name<br> WHEN 'banana' THEN RETURN 'yellow' ;<br> WHEN 'apple' THEN RETURN 'green' ;<br> WHEN 'blueberry' THEN RETURN 'blue' ;<br> END CASE ;<br> END get_colour;<br>/
рд╣рдорд╛рд░реА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдлрд▓ рдХрд╛ рд░рдВрдЧ рдЬреНрдЮрд╛рдд рдХреАрдЬрд┐рдП
SELECT get_colour(fruit_name) FROM fruits;
рдкреНрд░рд╢реНрди: рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЛ рдХреНрдпрд╛ рд▓реМрдЯрд╛рдПрдЧрд╛?
SELECT seq.nextval FROM dual;
рддреЛ, рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ 15 рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЛ 15 рдмрд╛рд░ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред рдФрд░ рдЬрдм рд╕реЗ рд╣рдо
seq.nextval рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рд╣рдо рдкрд░рд┐рдгрд╛рдо 16 рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЪрд▓реЛ рдПрдХ рдФрд░ рдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреНрд░рдо рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░реЗрдВред
DROP SEQUENCE seq;<br>
CREATE SEQUENCE seq START WITH 1;<br>
рдФрд░ рдлрд┐рд░ рд╕реЗ, рд╣рдо рдЕрдкрдиреЗ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдлрд▓реЛрдВ рдХреЗ рд░рдВрдЧ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░ рдЗрд╕реЗ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕реЗ
рдЪреБрдиреЗрдВ рджреЛрд╣рд░реЗ рд╕реЗ ред
SELECT ( SELECT get_colour(fruit_name) FROM dual)<br> FROM fruits;
рдкреНрд░рд╢реНрди: рдЗрд╕ рдмрд╛рд░ рдЕрдиреБрд░реЛрдз рдХреНрдпрд╛ рд▓реМрдЯрд╛рдПрдЧрд╛?
SELECT seq.nextval FROM dual;
рдпрд╣ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐, рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдХреА рддрд░рд╣, рдлрд╝рдВрдХреНрд╢рди рдХреЛ 15 рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЕрдиреБрд░реЛрдз 16 рдлрд┐рд░ рд╕реЗ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред
рд╣рдо рдкрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╕рдВрдЦреНрдпрд╛ 4 рд╡рд╛рдкрд╕ рдЖ рдЧрдИ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЗрд╡рд▓ 3 рдмрд╛рд░ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ред
рдХреНрдпрд╛ рд╣реБрдЖ рдерд╛?
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЗрд╡рд▓ 3 рдмрд╛рд░ рдХреНрдпреЛрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рдо рдЗрд╕рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рддрд╛рд▓рд┐рдХрд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ 15 рдлрд▓ рд╣реИ, рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдХреНрд╡реЗрд░реА рд╕рд╣реА рдбреЗрдЯрд╛ рд▓реМрдЯрд╛рддреА рд╣реИ?
рдЙрддреНрддрд░ рдЙрдкрдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдХреИрд╢рд┐рдВрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрдВрддреНрд░ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ -
рд╕реНрдХреЗрд▓рд░ рд╕рдмрдХреНрд╡реЗрд░реА рдХреИрд╢рд┐рдВрдЧ ред
SELECT рдХреНрд╡реЗрд░реА рдХреЗ рдкрд░рд┐рдгрд╛рдо
some_function (x) рджреЛрд╣рд░реЗ рд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░
x рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдорд╛рди рдХреЗ рд▓рд┐рдП рд╕рд╣реЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЗрд╡рд▓ рд╡рд┐рднрд┐рдиреНрди рдЗрдирдкреБрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рддреАрди рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд▓ рд╣реИрдВ (рдХреЗрд▓рд╛, рд╕реЗрдм, рдмреНрд▓реВрдмреЗрд░реА),
рддрдм рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЗрд╡рд▓ рддреАрди рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдФрд░ рдпрд╣рд╛рдВ рдЯреЙрдо рдХрд╛рдЗрдЯ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддрд╛ рд╣реИред
рд▓рдЧрднрдЧред рджреБрднрд╛рд╖рд┐рдпрд╛ред
рдкреВрд░реНрдгрддрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ
DETERMINISTIC рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдлрд┐рд░ рдЕрдиреБрд░реЛрдз рдореЗрдВ
рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ get_colour (fruit_name) рдлрд▓реЛрдВ рд╕реЗ; рдпрд╣ рдХреЗрд╡рд▓ 3 рдмрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред