рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рд╕реЗ рдЙрджреНрдзрд░рдг (
1NF ):
рдкрдВрдХреНрддрд┐ рдФрд░ рд╕реНрддрдВрдн рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЪреМрд░рд╛рд╣реЗ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдбреЛрдореЗрди рд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рдПрдХ рдорд╛рди рд╣реЛрддрд╛ рд╣реИ (рдФрд░ рдЕрдзрд┐рдХ рдХреБрдЫ рдирд╣реАрдВ)ред
рдЗрд╕ рдореВрд▓реНрдп рдХреЗ рдЕрд░реНрде рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдФрд░ рдПрдХ рд╣реА рдореВрд▓реНрдп рдкрд░рдорд╛рдгреБ рдпрд╛ рдЧреИрд░-рдкрд░рдорд╛рдгреБ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдорд╛рди "4286" рд╣реИ
- рдкрд░рдорд╛рдгреБ , рдпрджрд┐ рдЗрд╕рдХрд╛ рдЕрд░реНрде "рдХреНрд░реЗрдбрд┐рдЯ рдХрд╛рд░реНрдб рдкрд┐рди" рд╣реИ (рдЬрдм рдЯреВрдЯ рдЧрдпрд╛ рдпрд╛ рдкреБрди: рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛, рддреЛ рдЕрд░реНрде рдЦреЛ рдЧрдпрд╛ рд╣реИ)
- рдЧреИрд░-рдкрд░рдорд╛рдгреБ , рдпрджрд┐ рдЗрд╕рдХрд╛ рдЕрд░реНрде "рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рд╕рдореВрд╣" рд╣реИ (рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛрдиреЗ рдпрд╛ рдкреБрди: рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реЛрдиреЗ рдкрд░, рдЕрд░реНрде рдЦреЛ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИ)
рдпрд╣ рдЖрд▓реЗрдЦ рдирд┐рдореНрди рдлрд╝реАрд▓реНрдб рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП SQL рдХреНрд╡реЗрд░реА рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рддрд░реАрдХреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдЧрд╛: рд╕реНрдЯреНрд░рд┐рдВрдЧ, рддрд┐рдерд┐, рд╕рд░рд▓ рд╕реВрдЪреА ($ рдПрд▓рдмреА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ), рд╕реВрдЪреА рд╕рдВрдЧреНрд░рд╣ рдФрд░ рд╕рд░рдгреА рд╕рдВрдЧреНрд░рд╣ред
рд╕рд╛рдордЧреНрд░реА рдХреА рддрд╛рд▓рд┐рдХрд╛:
рдкрд░рд┐рдЪрдп
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдлреЛрди рдХреА рд╕реВрдЪреА рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдХреНрд▓рд╛рд╕рд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рдмрдирд╛рдПрдБ:
create table cl_phones(tname varchar2(100), phone varchar2(30)); insert into cl_phones(tname,phone) values ('','867-843-25'); insert into cl_phones(tname,phone) values ('','830-044-35'); insert into cl_phones(tname,phone) values ('','530-055-35'); insert into cl_phones(tname,phone) values ('','530-055-35'); insert into cl_phones(tname,phone) values ('','555-011-35'); insert into cl_phones(tname,phone) values ('','530-055-31'); insert into cl_phones(tname,phone) values ('','531-051-32'); insert into cl_phones(tname,phone) values ('','532-052-33'); insert into cl_phones(tname,phone) values ('','533-053-35');
рдЕрдм рдкреНрд░рддреНрдпреЗрдХ рдирд╛рдо рдХреЗ рд▓рд┐рдП рдлреЛрди рдХреА рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рд╕реЗ рдЕрд▓рдЧ рд╕реВрдЪреА рдореБрджреНрд░рд┐рдд рдХрд░реЗрдВ:
рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
% рд╕рдЯреАрдХ ( tname ) tname ,
рд▓рд┐рд╕реНрдЯ ( рдлреЛрди ) рдлреЛрдирд╕реНрдЯрд╛рд░
Cl_phones рд╕реЗ
рдЧреНрд░реБрдк рджреНрд╡рд╛рд░рд╛ tname
рдпрд╛ рддреЛ:
рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
рдЕрд▓рдЧ % рд╕рдЯреАрдХ ( tname ) tname ,
рд▓рд┐рд╕реНрдЯ ( рдлреЛрди % foreach ( tname )) рдлреЛрдирд╕реНрдЯрд╛рд░
Cl_phones рд╕реЗ
рдкрд░рд┐рдгрд╛рдо:
tname | phonestr |
---|
рдПрдВрдбреНрд░рдпреВ | 867-843-25,830-044-35,530-055-35 |
рд╡рдиреНрдпрд╛ | 530-055-31,531-051-32,532-052-33,533-053-35 |
рдХрд╣рд╛рд╡рдд | 530-055-35,555-011-35 |
рдлрд╝реЛрди рдкрд░ рдПрдХ рдЗрдВрдбреЗрдХреНрд╕ рдирд┐рд░реНрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлрд╝реЛрди рдкрд░ рдмрд╣реБрдд рддреНрд╡рд░рд┐рдд рдЦреЛрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдПрдХрдорд╛рддреНрд░ рджреЛрд╖ рдирд╛рдореЛрдВ рдХрд╛ рджреЛрд╣рд░рд╛рд╡ рд╣реИ: рд╕реВрдЪреА рдореЗрдВ рдЬрд┐рддрдиреЗ рдЕрдзрд┐рдХ рддрддреНрд╡ рд╣реЛрдВрдЧреЗ, рд╣рдорд╛рд░рд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдЙрддрдирд╛ рд╣реА рдЕрдзрд┐рдХ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрдЧрд╛ред
рдЗрд╕рд▓рд┐рдП, рдХрднреА-рдХрднреА рдПрдХ рдмрд╛рд░ рдПрдХ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХрдИ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИ - рдпрд╣ рдлреЛрди рдпрд╛ рдЙрд╕рдХреЗ рднрд╛рдЧреЛрдВ, рдкрд╛рд╕рд╡рд░реНрдб, рдЖрджрд┐ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реЛ рд╕рдХрддреА рд╣реИ - рдПрдХ рд╡рд┐рднрд╛рдЬрдХ рдХреЗ рд╕рд╛рде рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ, рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдореВрд▓реНрдпреЛрдВ рдХреА рддреНрд╡рд░рд┐рдд рдЦреЛрдЬ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛред рдмреЗрд╢рдХ, рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдПрдХ рдирд┐рдпрдорд┐рдд рд╕реВрдЪрдХрд╛рдВрдХ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рдмрдбрд╝реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдПрдХ рд╕рдмрд╕реНрдЯреНрд░рд┐рдВрдЧ рдЦреЛрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЪреВрдВрдХрд┐ рдмрд╣реБрдд рд╕рд╛рд░реЗ рддрддреНрд╡ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╕реВрдЪрдХрд╛рдВрдХ рдХреА рд▓рдВрдмрд╛рдИ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛрдЧреА, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рд╣рдо рдЕрднреА рднреА рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рд╣рдорд╛рд░реА рдЦреЛрдЬ рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдореЗрдВ рдорджрдж рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рддреЛ рдХреНрдпрд╛ рдХрд░реЗрдВ?
рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕реВрдЪрдХрд╛рдВрдХ рд╕рдВрдЧреНрд░рд╣ рд╡рд╛рд▓реЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рд╕рдВрдЧреНрд░рд╣ рдпрд╛ рддреЛ "рд╡рд╛рд╕реНрддрд╡рд┐рдХ" (рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд
<...> рдФрд░
рд╕рд░рдгреА рдХреА <...> ) рдпрд╛ "рдЖрднрд╛рд╕реА" рд╕реВрдЪреА рд╣реЛ рд╕рдХрддреА рд╣реИред
рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдВрдЧреНрд░рд╣ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рд┐рд╕реНрдЯрдо рдЙрди рдкрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕реВрдЪрдХрд╛рдВрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдмрджрд▓ рдирд╣реАрдВ рд╕рдХрддрд╛ рд╣реИ, рдЖрднрд╛рд╕реА рд▓реЛрдЧреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕реВрдЪрдХрд╛рдВрдХ рдмрдирд╛рдиреЗ рдХреА рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рдкрд╛рд╕ рд╣реИред
рдПрдХ рд╡рд┐рднрд╛рдЬрдХ, рддрд╛рд░реАрдЦ, рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ - рдпреЗ рдРрд╕реЗ "рдЖрднрд╛рд╕реА" рд╕рдВрдЧреНрд░рд╣ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред
рдЗрд╕рд▓рд┐рдП, рд╕рдВрдЧреНрд░рд╣ рдкрд░ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:
INDEX idx1 ON (MyField (ELEMENTS));
рдпрд╛
INDEX idx1 ON (MyField (KEYS));
рдкреНрд░реЙрдкрд░реНрдЯреАрдиреЗрдо BuildValueArray рдирд╛рдордХ рд╡рд┐рдзрд┐, рдЬрд┐рд╕реЗ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред
рд╡рд┐рдзрд┐ рдХрд╛ рд╕рд╛рдорд╛рдиреНрдп рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
ClassMethod propertynameBuildValueArray ( рдорд╛рди , ByRef valueArray ) % рд╕реНрдерд┐рддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ
рдЬрд╣рд╛рдВ:
- рдореВрд▓реНрдп - рддрддреНрд╡реЛрдВ рдореЗрдВ рддреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝реАрд▓реНрдб рдорд╛рди;
- valueArray рдкрд░рд┐рдгрд╛рдореА рд╕рд░рдгреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрддреНрд╡ рд╣реЛрддреЗ рд╣реИрдВред
рдПрдХ рд╕рд░рдгреА рдлреЙрд░реНрдо рдХрд╛ рдПрдХ рдХреБрдВрдЬреА / рдорд╛рди рд╣реИ:
рд╕рд░рдгреА (рдХреА 1) = рдорд╛рди 1
рд╕рд░рдгреА (рдХреА 2) = рдорд╛рди 2
рдЖрджрд┐
рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╡рд┐рдзрд┐ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ
[рдлрд╛рдЗрдирд▓] рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдЗрд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреА рд╣реИред
рдЖрдЗрдП рдРрд╕реЗ рдЗрдВрдбреЗрдХреНрд╕ рдмрдирд╛рдПрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╣рдорд╛рд░реЗ SQL рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПред
рдиреЛрдЯ: рддрд╛рдХрд┐ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдХреЛрдИ рдХрд▓рд╛рдХреГрддрд┐рдпрд╛рдВ рди рдмрдЪреА рд╣реЛрдВ, рдпрд╣ рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдирдП рд╕реЗ рдкрд╣рд▓реЗ рдХрдХреНрд╖рд╛ рдХреЗ рдЧреНрд▓реЛрдмрд▓реНрд╕ рдФрд░ рд╕реНрдЯреЛрд░реЗрдЬ рд╕реНрдХреАрдо рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╛рдл рдХрд░ рджреЗрдВред
рд╕реАрдорд╛рдВрдХрд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ
рдирд┐рдореНрди рд╡рд░реНрдЧ рдмрдирд╛рдПрдВ:
рдХреНрд▓рд╛рд╕ рдбреЗрдореЛ.рдЯреЗрд╕реНрдЯ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд▓рдЧрд╛рддрд╛рд░% рд╣реИ
{
рдлреЛрди ( рд╕реВрдЪрдХрд╛рдВрдХ ) рдкрд░ рд╕реВрдЪрдХрд╛рдВрдХ iPhones;
% рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдкрддреНрддрд┐ рдлрд╝реЛрди ;
рдХреНрд▓рд╛рд╕рдореЗрде рдлреЛрди
рдореВрд▓реНрдп,
ByRef array ) % рд╕реНрдЯреЗрдЯрд╕ рдХреЗ рд░реВрдк рдореЗрдВ
{
рдпрджрд┐ рдорд╛рди = "" {
рд╕реЗрдЯ рд╕рд░рдгреА (0) = рдорд╛рди
} {
рд╕реЗрдЯ рд╕реВрдЪреА = $ ListFromString ( рдорд╛рди , "," ), ptr = 0
рдЬрдмрдХрд┐ $ ListNext ( рд╕реВрдЪреА , ptr , рдЖрдЗрдЯрдо ) {
рд╕реЗрдЯ рд╕рд░рдгреА ( ptr ) = рдЖрдЗрдЯрдо
}
}
$ $ $ $ рдареАрдХ рд╣реИ
}
ClassMethod рднрд░реЗрдВ ()
{
рдФрд░ sql ( рдЫреЛрдЯрд╛ рдЯреЗрдмрд▓ рдбреЗрдореЛ ред рдкрд░реАрдХреНрд╖рдг )
& sql ( рдбреЗрдореЛ рдЯреЗрд╕реНрдЯ рдореЗрдВ рдбрд╛рд▓реЗрдВ ) ( рдлреЛрди )
рдЕрд╢рдХреНрдд рд╕рдВрдШ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
рд╕рднреА рд╕рдВрдШ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
'b, a' рд╕рднреА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
рд╕рднреА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ 'рдмреА, рдмреА'
'a, c, b' рд╕рднреА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
'рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ ,'
)
ZWrite ^ Demo.testD
ZWrite ^ Demo.testI
}
}
рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ
рднрд░реЗрдВ () рд╡рд┐рдзрд┐ рдЪрд▓рд╛рдПрдБ:
USER>do ##class(demo.test).Fill()
^demo.testD=6
^demo.testD(1)=$lb("","")
^demo.testD(2)=$lb("","a")
^demo.testD(3)=$lb("","b,a")
^demo.testD(4)=$lb("","b,b")
^demo.testD(5)=$lb("","a,c,b")
^demo.testD(6)=$lb("",",,")
^demo.testI("iPhones"," ",1)=""
^demo.testI("iPhones"," ",6)=""
^demo.testI("iPhones"," A",2)=""
^demo.testI("iPhones"," A",3)=""
^demo.testI("iPhones"," A",5)=""
^demo.testI("iPhones"," B",3)=""
^demo.testI("iPhones"," B",4)=""
^demo.testI("iPhones"," B",5)=""
^demo.testI("iPhones"," C",5)=""
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкрдВрдХреНрддрд┐ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдирд╣реАрдВ рдХрд░рддреА рдереА, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╣рд┐рд╕реНрд╕реЗред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдк рдЦреБрдж рддрдп рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рдмрдбрд╝реА рд▓рд╛рдЗрди рдХреЛ рд╕рдмрд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдХреИрд╕реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд░реЗрдВред рд╕реАрдорд╛рдВрдХрд┐рдд рд░реЗрдЦрд╛рдУрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ xml, json, рдпрд╛ рдХреБрдЫ рдФрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рд╣рдорд╛рд░реА рддрд╛рд▓рд┐рдХрд╛ рдХреА рд╕рд╛рдордЧреНрд░реА рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧреА:
рдЖрдИрдбреА | рдлрд╝реЛрдиреЛрдВ |
---|
1 | (рд╢реВрдиреНрдп) |
2 | рдПрдХ |
3 | рдмреА, рдП |
4 | рдмреА, рдмреА |
5 | рдП, рд╕реА, рдмреА |
6 | ,, |
рдЕрдм рдореВрд▓реНрдп "a" рд╡рд╛рд▓реА рд╕рднреА рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП,
'% xxx%' рдпрд╛
[ xxx] рдЬреИрд╕реЗ рд╡рд┐рдзреЗрдпрдХреЛрдВ рдХрд╛ рдЖрдорддреМрд░ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
рдбреЗрдореЛ рд╕реЗ * рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ ред рдкрд░реАрдХреНрд╖рдг рдЬрд╣рд╛рдВ рдлреЛрди [ 'рдП'
рдбреЗрдореЛ рд╕реЗ * рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ ред рдкрд░реАрдХреНрд╖рдг рдЬрд╣рд╛рдВ рдлреЛрди '% a%' рдЬреИрд╕реЗ рд╣реИрдВ
рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдорд╛рд░реЗ
iPhones рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд┐рдзреЗрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
FOR SOME %ELEMENT() (%VALUE = )
рдкреВрд░реНрд╡рдЧрд╛рдореА рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдорд╛рд░рд╛ рдЕрдиреБрд░реЛрдз рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░реВрдк рд▓реЗрдЧрд╛:
рдбреЗрдореЛ рд╕реЗ * рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ ред рдкрд░реАрдХреНрд╖рдг рдЬрд╣рд╛рдВ рдХреБрдЫ% рддрддреНрд╡ ( рдлрд╝реЛрди ) ( % рдорд╛рди = 'a' ) рдХреЗ рд▓рд┐рдП
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдХрд╛рд░рдг, рдЗрд╕ рдХреНрд╡реЗрд░реА рдХреА рдЧрддрд┐ рдкрд┐рдЫрд▓реЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╛рдлреА рдЕрдзрд┐рдХ рд╣реЛрдЧреАред
рдмреЗрд╢рдХ, рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
(
% рдорд╛рди % STARTSWITH 'a' )(
% рдореВрд▓реНрдп [ 'рдП' рдФрд░ % рдореВрд▓реНрдп [ 'рдмреА' )(
% рдорд╛рди рдореЗрдВ ( 'c' , 'd' ))(
% рдорд╛рди рд╢реВрдиреНрдп рд╣реИ )рдФрд░ рдЕрдм рдереЛрдбрд╝рд╛ рдЬрд╛рджреВ ...
рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдбреЗрдЯрд╛ рдЫрд┐рдкрд╛рдирд╛
BuildValueArray рд╡рд┐рдзрд┐ рдореЗрдВ
, рд╣рдо рдЖрдорддреМрд░ рдкрд░ рдореВрд▓реНрдп рдореЗрдВ
рдореВрд▓реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ
рд╕рд░рдгреА рдХреЛ рдЖрдмрд╛рдж рдХрд░рддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рдЗрд╕ рдирд┐рдпрдо рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?
рдЖрдЗрдП рдЗрд╕ рддрд░рд╣ рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ:
рдХреНрд▓рд╛рд╕ рдбреЗрдореЛ.рдЯреЗрд╕реНрдЯ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд▓рдЧрд╛рддрд╛рд░% рд╣реИ
{
рд╕реВрдЪрдХрд╛рдВрдХ iLogin рд▓реЙрдЧ рдЗрди (рддрддреНрд╡);
рд╕рдВрдкрддреНрддрд┐ рд▓реЙрдЧрд┐рди % рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ ;
ClassMethod LoginBuildValueArray (
рдореВрд▓реНрдп,
ByRef array ) % рд╕реНрдЯреЗрдЯрд╕ рдХреЗ рд░реВрдк рдореЗрдВ
{
рдпрджрд┐ рдорд╛рди = "рдмреЙрдм" {
рд╕реЗрдЯ рд╕рд░рдгреА (0) = "test1"
рд╕реЗрдЯ рд╕рд░рдгреА (1) = "рдкрд░реАрдХреНрд╖рдг 2 "
рд╕реЗрдЯ рд╕рд░рдгреА (2) = "рдкрд░реАрдХреНрд╖рдг 3"
} ElseIf рдорд╛рди = " рдкреЗрдЯреНрдпрд╛ " {
рд╕реЗрдЯ рд╕рд░рдгреА ( "-" ) = "111"
рд╕реЗрдЯ рд╕рд░рдгреА ( "5.4" ) = "222"
рд╕реЗрдЯ рд╕рд░рдгреА ( "рдПрдлрдЬреА" ) = "333"
} {
рд╕реЗрдЯ рд╕рд░рдгреА ( "рдХреБрдВрдЬреА" ) = "рдорд╛рди"
}
$ $ $ $ рдареАрдХ рд╣реИ
}
ClassMethod рднрд░реЗрдВ ()
{
рдФрд░ sql ( рдЫреЛрдЯрд╛ рдЯреЗрдмрд▓ рдбреЗрдореЛ ред рдкрд░реАрдХреНрд╖рдг )
& sql ( рдбреЗрдореЛ рдЯреЗрд╕реНрдЯ рдореЗрдВ рдбрд╛рд▓реЗрдВ ) ( рд▓реЙрдЧрд┐рди )
рд╕рднреА рдХреЛ 'рд╡рд╛рд╕реНрдп' рд╕рдВрдШ рдЪреБрдиреЗрдВ
рд╕рднреА рдХреЛ 'рд╡рд╛рд╕реНрдп' рд╕рдВрдШ рдЪреБрдиреЗрдВ
рд╕рднреА 'рдкреЗрдЯреНрдпрд╛' рд╕рдВрдШ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
рд╕рднреА 'рдкреЗрдЯреНрдпрд╛' рд╕рдВрдШ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
рд╕рднреА 'рдЗрд╡рд╛рди' рд╕рдВрдШ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
'рдЗрд╡рд╛рди' рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
)
ZWrite ^ Demo.testD
ZWrite ^ Demo.testI
}
}
рднрд░рдиреЗ рдХреЗ рдмрд╛рдж, рддрд╛рд▓рд┐рдХрд╛ рдХреА рд╕рд╛рдордЧреНрд░реА рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧреА:
рдЖрдИрдбреА | рд▓реЙрдЧ рдЗрди |
---|
1 | Vasya |
2 | Vasya |
3 | рдкреЗрдЯреНрдпрд╛ |
4 | рдкреЗрдЯреНрдпрд╛ |
5 | рдЗрд╡рд╛рди |
6 | рдЗрд╡рд╛рди |
рдФрд░ рдЕрдм - рдзреНрдпрд╛рди! - рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрд░реЛрдз рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:
рдбреЗрдореЛ рд╕реЗ * рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ ред рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ рдЬрд╣рд╛рдБ рдХреБрдЫ% рддрддреНрд╡ ( рд▓реЙрдЧрд┐рди ) ( % рдорд╛рди = '111' )
рд╣рдо рд▓реМрдЯреЗрдВрдЧреЗ:
рдЖрдИрдбреА | рд▓реЙрдЧ рдЗрди |
---|
3 | рдкреЗрдЯреНрдпрд╛ |
4 | рдкреЗрдЯреНрдпрд╛ |
рдирддреАрдЬрддрди, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдбреЗрдЯрд╛ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдФрд░ рднрд╛рдЧ - рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ рдЫрд┐рдкрд╛ рд╣реБрдЖ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╣рдо рдлрд┐рд░ рднреА рдПрдХ рдЦреЛрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдо рдЗрд╕реЗ рдХрд╣рд╛рдВ рдЙрдкрдпреЛрдЧреА рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ?
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрдВрдбреЗрдХреНрд╕ рдореЗрдВ рдЖрдк рдПрдХ рдирд╣реАрдВ рдЫрд┐рдкрд╛ рд╕рдХрддреЗ, рдЬреИрд╕рд╛ рдХрд┐ рдкреНрд░рдерд╛рдЧрдд рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдкрд╛рд╕рд╡рд░реНрдб рдХрд╛ рдПрдХ рдкреВрд░рд╛ рд╕реЗрдЯ рдЬреЛ SQL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╡рд╛рдВрдЫрдиреАрдп рд╣реИред рдмреЗрд╢рдХ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
GRANT рд╕реНрддрдВрдн-рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ ред рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдкрдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХреНрд╖реЗрддреНрд░реЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдбреЗрдЯрд╛ рдЫрд┐рдкрд╛рдирд╛ (рдЬрд╛рд░реА)
рдпрджрд┐ рдЖрдк рдЧреНрд▓реЛрдмрд▓реНрд╕ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдбреЗрдЯрд╛ рдФрд░ рдЗрдВрдбреЗрдХреНрд╕ рд╣рдорд╛рд░реА рдЯреЗрдмрд▓ рдХреЗ рд▓рд┐рдП рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рд╡рд╣рд╛рдВ рдЕрдкрдиреА рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдирд╣реАрдВ рджреЗрдЦреЗрдВрдЧреЗ: "5.4", "рдПрдлрдЬреА", рдЖрджрд┐:
^demo.testD=6
^demo.testD(1)=$lb("","")
^demo.testD(2)=$lb("","")
^demo.testD(3)=$lb("","")
^demo.testD(4)=$lb("","")
^demo.testD(5)=$lb("","")
^demo.testD(6)=$lb("","")
^demo.testI("iLogin"," 111",3)=""
^demo.testI("iLogin"," 111",4)=""
^demo.testI("iLogin"," 222",3)=""
^demo.testI("iLogin"," 222",4)=""
^demo.testI("iLogin"," 333",3)=""
^demo.testI("iLogin"," 333",4)=""
^demo.testI("iLogin"," TEST1",1)=""
^demo.testI("iLogin"," TEST1",2)=""
^demo.testI("iLogin"," TEST2",1)=""
^demo.testI("iLogin"," TEST2",2)=""
^demo.testI("iLogin"," TEST3",1)=""
^demo.testI("iLogin"," TEST3",2)=""
^demo.testI("iLogin"," VALUE",5)=""
^demo.testI("iLogin"," VALUE",6)=""
рдлрд┐рд░ рд╣рдордиреЗ рдЙрдирд╕реЗ рдХреНрдпреЛрдВ рдкреВрдЫрд╛?
рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреЗ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рднрд░рддреЗ рд╣реИрдВред
рд╕реВрдЪрдХрд╛рдВрдХ iLogin On (рд▓реЙрдЧрд┐рди (KEYS), рд▓реЙрдЧрд┐рди (рддрддреНрд╡));
рдЧреНрд▓реЛрдмрд▓реНрд╕ рдПрдХ рдЕрд▓рдЧ рд░реВрдк рдзрд╛рд░рдг рдХрд░реЗрдВрдЧреЗ (рдореИрдВ рдХреЗрд╡рд▓ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рд╕рд╛рде рджреЗ рджреВрдБрдЧрд╛):
^demo.testI("iLogin"," -"," 111",3)=""
^demo.testI("iLogin"," -"," 111",4)=""
^demo.testI("iLogin"," 0"," TEST1",1)=""
^demo.testI("iLogin"," 0"," TEST1",2)=""
^demo.testI("iLogin"," 1"," TEST2",1)=""
^demo.testI("iLogin"," 1"," TEST2",2)=""
^demo.testI("iLogin"," 2"," TEST3",1)=""
^demo.testI("iLogin"," 2"," TEST3",2)=""
^demo.testI("iLogin"," 5.4"," 222",3)=""
^demo.testI("iLogin"," 5.4"," 222",4)=""
^demo.testI("iLogin"," FG"," 333",3)=""
^demo.testI("iLogin"," FG"," 333",4)=""
^demo.testI("iLogin"," KEY"," VALUE",5)=""
^demo.testI("iLogin"," KEY"," VALUE",6)=""
рдорд╣рд╛рди, рдЕрдм рд╣рдо рджреЛрдиреЛрдВ рдкреНрд░рдореБрдЦ рдореВрд▓реНрдпреЛрдВ рдФрд░ рддрддреНрд╡ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕реНрд╡рдпрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХреИрд╕реЗ рдХрд╛рдо рдЖ рд╕рдХрддрд╛ рд╣реИ?
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдЙрд╕ рджрд┐рдирд╛рдВрдХ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдкрд╛рд╕рд╡рд░реНрдб рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдпрд╛ рдХреБрдЫ рдФрд░ред рдФрд░ рдлрд┐рд░ рд╣рдорд╛рд░реЗ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдЗрд╕ рддрдереНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
рдбреЗрдореЛ рд╕реЗ * рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ ред рдкрд░реАрдХреНрд╖рдг рдЬрд╣рд╛рдВ рдХреБрдЫ% рддрддреНрд╡ ( рд▓реЙрдЧрд┐рди ) ( % рдХреБрдВрдЬреА = '- рдФрд░ % рдорд╛рди = ' 111 ' )
рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╣рд╛рдВ рдФрд░ рдХреНрдпрд╛ рд╕реНрдЯреЛрд░ рдХрд░рдирд╛ рд╣реИ, рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рдЖрдкрдХреЛ рдпрд╛рдж рд░рдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдЪрд╛рдмрд┐рдпрд╛рдБ рдЕрджреНрд╡рд┐рддреАрдп рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореВрд▓реНрдп рдирд╣реАрдВ рд╣реИрдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, "рд╕рдВрдЧреНрд░рд╣" рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ рдФрд░ рд╕рд╛рде рд╣реА рдорд╛рдирдХ рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ, рдЖрдк рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рд╕реВрдЪрдХрд╛рдВрдХ iLogin рдСрди (рд▓реЙрдЧрд┐рди (рдХреБрдВрдЬреА), рд▓реЙрдЧрд┐рди (рддрддреНрд╡)) [ рдбреЗрдЯрд╛ = ( рд▓реЙрдЧрд┐рди , рд▓реЙрдЧрд┐рди (рддрддреНрд╡))];
рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде, рдЙрдкрд░реЛрдХреНрдд рдЕрдиреБрд░реЛрдз рдЕрдм рдбреЗрдЯрд╛ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪреЗрдЧрд╛, рд▓реЗрдХрд┐рди рд╕рдм рдХреБрдЫ рд╕реВрдЪрдХрд╛рдВрдХ рд╕реЗ рд▓реЗ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рд╕рдордп рднреА рдмрдЪрд╛рдПрдЧрд╛ред
рджрд┐рдирд╛рдВрдХ (рд╕рдордп, рдЖрджрд┐)
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рд╛рде рддрд╛рд░реАрдЦреЛрдВ рдХрд╛ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ? рд╕рдмрд╕реЗ рддрддреНрдХрд╛рд▓, рдХреНрдпреЛрдВрдХрд┐ рдЕрдХреНрд╕рд░ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рджрд┐рди, рдорд╣реАрдиреЗ рдпрд╛ рд╡рд░реНрд╖ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЦреЛрдЬ рдХрд░рдиреА рд╣реЛрддреА рд╣реИред рдпрд╣рд╛рдВ рд╕рд╛рдорд╛рдиреНрдп рд╕реВрдЪрдХрд╛рдВрдХ рд╣рдорд╛рд░реА рдорджрдж рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди "рд╕рдВрдЧреНрд░рд╣" рдПрдХ рдмрд╣реБрдд рдЙрдкрдпреБрдХреНрдд рд╣реЛрдЧрд╛ред
рдЖрдЗрдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ:
рдХреНрд▓рд╛рд╕ рдбреЗрдореЛ.рдЯреЗрд╕реНрдЯ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд▓рдЧрд╛рддрд╛рд░% рд╣реИ
{
рд╕реВрдЪрдХрд╛рдВрдХ iBirthDay On (рдмрд░реНрдердбреЗ (KEYS), рдЬрдиреНрдорддрд┐рдерд┐ (рддрддреНрд╡));
рд╕рдВрдкрддреНрддрд┐ рдЬрдиреНрдо рддрд┐рдерд┐% рдХреЗ рд░реВрдк рдореЗрдВ ;
рдХреНрд▓рд╛рд╕рдореИрде рдмрд░реНрдердбреЗрдмрдпреВрдбрд┐рд▓рд╡реИрд▓реНрдпреВрдПрд░реЗ (
рдореВрд▓реНрдп,
ByRef array ) % рд╕реНрдЯреЗрдЯрд╕ рдХреЗ рд░реВрдк рдореЗрдВ
{
рдпрджрд┐ рдорд╛рди = "" {
рд╕реЗрдЯ рд╕рд░рдгреА (0) = рдорд╛рди
} {
рд╕реЗрдЯ d = $ zd ( рдорд╛рди , 3)
рд╕реЗрдЯ рд╕рд░рдгреА ( "yy" ) = + $ p ( d , "-" , 1)
рд╕реЗрдЯ рд╕рд░рдгреА ( "рдорд┐рдореА" ) = + $ p ( d , "-" , реи)
рд╕реЗрдЯ рд╕рд░рдгреА ( "dd" ) = + $ p ( d , "-" , 3)
}
$ $ $ $ рдареАрдХ рд╣реИ
}
ClassMethod рднрд░реЗрдВ ()
{
рдФрд░ sql ( рдЫреЛрдЯрд╛ рдЯреЗрдмрд▓ рдбреЗрдореЛ ред рдкрд░реАрдХреНрд╖рдг )
рдФрд░ sql ( рдбреЗрдореЛ рдЯреЗрд╕реНрдЯ рдореЗрдВ рдбрд╛рд▓реЗрдВ ) ( рдЬрдиреНрдорджрд┐рди )
{ d '2000-01-01' } рд╕рднреА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
{ d '2000-01-02' } рд╕рднреА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
{ d '2000-02-01' } рд╕рднреА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
{ d '2001-01-01' } рд╕рднреА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
{ d '2001-01-02' } рд╕рднреА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
{ d '2001-02-01' рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
)
ZWrite ^ Demo.testD
ZWrite ^ Demo.testI
}
}
рднрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣рдорд╛рд░реА рддрд╛рд▓рд┐рдХрд╛ рдХреА рд╕рд╛рдордЧреНрд░реА рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░реВрдк рд▓реЗрдЧреА:
рдЖрдИрдбреА | рдЬрдиреНрдорджрд┐рди |
---|
1 | 2000/01/01 |
2 | 2000/01/02 |
3 | 2000/01/02 |
4 | 2001/01/01 |
5 | 2001/01/02 |
6 | 2001/01/02 |
рдЕрдм рдпрд╣ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рд╣реИ, рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рддрд┐рдерд┐ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рднрд╛рдЧреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рднреА рдлрд░рд╡рд░реА рдЬрдиреНрдо рджрд┐рди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ:
рдбреЗрдореЛ рд╕реЗ * рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ ред рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ рдЬрд╣рд╛рдБ рдХреБрдЫ% рддрддреНрд╡ ( рдЬрдиреНрдо рджрд┐рди ) ( % рдХреБрдВрдЬреА = 'рдорд┐рдореА' рдФрд░ % рдорд╛рди = реи)
рдкрд░рд┐рдгрд╛рдо:
рдЖрдИрдбреА | рдЬрдиреНрдорджрд┐рди |
---|
3 | 2000/01/02 |
6 | 2001/01/02 |
рд╕рд░рд▓ рд╕реВрдЪреА
рдХреИрдЪ рдбреАрдмреАрдПрдордПрд╕ рдореЗрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реВрдЪреА (
% рд╕реВрдЪреА ) рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдПрдХ рд╡рд┐рднрд╛рдЬрдХ рдХреА рдкрд╕рдВрдж рдХреЗ рд╕рд╛рде рдХрдард┐рдирд╛рдЗрдпрд╛рдВ рд╣реЛрдиреЗ рдкрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдмрдЬрд╛рдп рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдРрд╕реЗ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдмрд╣реБрдд рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИред
рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
рдХреНрд▓рд╛рд╕ рдбреЗрдореЛ.рдЯреЗрд╕реНрдЯ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд▓рдЧрд╛рддрд╛рд░% рд╣реИ
{
рд╕реВрдЪреА рдкрд░ рд╕реВрдЪреА (рддрддреНрд╡) рд╕реВрдЪрдХрд╛рдВрдХ ;
рд╕рдВрдкрддреНрддрд┐ рд╕реВрдЪреА % рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ ;
рдХреНрд▓рд╛рд╕рдореЗрдереЛрдб рд╕реВрдЪреАрдмрд╛рдЗрд▓реНрдбрд╡реИрд▓реНрдпреВрдЕрд░реЗ (
рдореВрд▓реНрдп,
ByRef array ) % рд╕реНрдЯреЗрдЯрд╕ рдХреЗ рд░реВрдк рдореЗрдВ
{
рдпрджрд┐ рдорд╛рди = "" {
рд╕реЗрдЯ рд╕рд░рдгреА (0) = рдорд╛рди
} {
рд╕реЗрдЯ ptr = 0
рдЬрдмрдХрд┐ $ ListNext ( рдореВрд▓реНрдп , ptr , рдЖрдЗрдЯрдо ) {
рд╕реЗрдЯ рд╕рд░рдгреА ( ptr ) = рдЖрдЗрдЯрдо
}
}
$ $ $ $ рдареАрдХ рд╣реИ
}
ClassMethod рднрд░реЗрдВ ()
{
рдФрд░ sql ( рдЫреЛрдЯрд╛ рдЯреЗрдмрд▓ рдбреЗрдореЛ ред рдкрд░реАрдХреНрд╖рдг )
& sql ( рдбреЗрдореЛ рдЯреЗрд╕реНрдЯ рдореЗрдВ рдбрд╛рд▓реЗрдВ ) ( рд╕реВрдЪреА )
рдЕрд╢рдХреНрдд рд╕рдВрдШ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
$ LISTBUILD ( 'a' ) рд╕рдВрдШ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
$ LISTBUILD ( 'b' , 'a' ) рд╕рднреА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
$ LISTBUILD ( 'b' , 'b' ) рд╕рднреА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
$ LISTBUILD ( 'a' , 'c' , 'b' ) рд╕рднреА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
$ LISTBUILD рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ ( 'рдП,' , рдЕрд╢рдХреНрдд , рдЕрд╢рдХреНрдд )
)
ZWrite ^ Demo.testD
ZWrite ^ Demo.testI
}
}
ODBC рдкреНрд░рджрд░реНрд╢рди рдореЛрдб рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛ рдХреА рд╕рд╛рдордЧреНрд░реА рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:
рдиреЛрдЯ: Cach├й рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреАрди рдореЛрдб рд╣реИрдВ: рддрд╛рд░реНрдХрд┐рдХ, ODBC рдФрд░ рдбреЗрдЯрд╛ рдбрд┐рд╕реНрдкреНрд▓реЗ рд╡рд┐рдХрд▓реНрдк ред
рдЖрдИрдбреА | рд╕реВрдЪреА |
---|
1 | (рд╢реВрдиреНрдп) |
2 | рдПрдХ |
3 | рдмреА, рдП |
4 | рдмреА, рдмреА |
5 | рдП, рд╕реА, рдмреА |
6 | "рдП ,," ,, |
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рддрддреНрд╡ рд╡рд┐рднрд╛рдЬрдХ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рддрддреНрд╡реЛрдВ рдореЗрдВ рдХрд┐рд╕реА рднреА рд╡рд░реНрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
ODBC рдореЛрдб рдореЗрдВ рдЯрд╛рдЗрдк
% рд╕реВрдЪреА рдХреЗ рдХреНрд╖реЗрддреНрд░ рдХреЛ
рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддреЗ
рд╕рдордп ,
ODBCDELIMITER рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдПрдХ рд╡рд┐рднрд╛рдЬрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ "," рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдРрд╕реЗ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд╕рд╛рде, рд╣рдорд╛рд░реА рддрд╛рд▓рд┐рдХрд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:
рд╕рдВрдкрддреНрддрд┐ рд╕реВрдЪреА % рд╕реВрдЪреА ( ODBCDELIMITER = "^" );
рдЖрдИрдбреА | рд╕реВрдЪреА |
---|
1 | (рд╢реВрдиреНрдп) |
2 | рдПрдХ |
3 | b ^ рдП |
4 | b ^ b |
5 | a ^ c ^ b |
6 | a ^ ^ ^ |
рдЖрдЗрдЯрдо рдвреВрдБрдврдирд╛ рд╕реАрдорд╛рдВрдХрд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИ:
рдбреЗрдореЛ рд╕реЗ * рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ ред рдкрд░реАрдХреНрд╖рдг рдЬрд╣рд╛рдВ рдХреБрдЫ% рддрддреНрд╡ ( рд╕реВрдЪреА ) ( % рдорд╛рди = 'рдП,' ) рдХреЗ рд▓рд┐рдП
рдЖрдИрдбреА | рд╕реВрдЪреА |
---|
6 | "рдП ,," ,, |
рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐
% INLIST рд╡рд╛рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рдЕрднреА рддрдХ "рд╕рдВрдЧреНрд░рд╣" рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдпрд╣ рдКрдкрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдзреАрдорд╛ рд╣реЛрдЧрд╛:
рдбреЗрдореЛ рд╕реЗ * рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ ред рдкрд░реАрдХреНрд╖рдг рдЬрд╣рд╛рдВ 'рдП,' % рд╕реВрдЪреА рд╕реВрдЪреА
рд╕рдВрдЧреНрд░рд╣ рд╕реВрдЪреА
рд╣рдо рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реВрдЪреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╕реВрдЪреА рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
рдХреНрд▓рд╛рд╕ рдбреЗрдореЛ.рдЯреЗрд╕реНрдЯ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд▓рдЧрд╛рддрд╛рд░% рд╣реИ
{
рдЗрдВрдбреЗрдХреНрд╕ iListStr рдСрди рд▓рд┐рд╕реНрдЯрд╕реНрдЯрд╛рд░ (рддрддреНрд╡);
% рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдкрддреНрддрд┐ рдХреА рд╕реВрдЪреА ;
ClassMethod рднрд░реЗрдВ ()
{
рдФрд░ sql ( рдЫреЛрдЯрд╛ рдЯреЗрдмрд▓ рдбреЗрдореЛ ред рдкрд░реАрдХреНрд╖рдг )
& sql ( рдбреЗрдореЛ рдЯреЗрд╕реНрдЯ рдореЗрдВ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░реЗрдВ ) ( рд╕реВрдЪреА )
рдЕрд╢рдХреНрдд рд╕рдВрдШ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
$ LISTBUILD ( 'a' ) рд╕рдВрдШ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
$ LISTBUILD ( 'b' , 'a' ) рд╕рднреА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
$ LISTBUILD ( 'b' , 'b' ) рд╕рднреА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
$ LISTBUILD ( 'a' , 'c' , 'b' ) рд╕рднреА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
$ LISTBUILD рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ ( 'рдП,' , рдЕрд╢рдХреНрдд , рдЕрд╢рдХреНрдд )
)
ZWrite ^ Demo.testD
ZWrite ^ Demo.testI
}
}
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд▓рдЧрднрдЧ рд╕рдм рдХреБрдЫ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╛рдлреА рдирд╣реАрдВ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрд╛рддреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
- рд╕рд░рдгреА рдореЗрдВ рд╣рдорд╛рд░реЗ рдХреНрд╖реЗрддреНрд░реЛрдВ, рдХреБрдВрдЬрд┐рдпреЛрдВ рдФрд░ рд╕реВрдЪрдХрд╛рдВрдХ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рдВрдХрд▓рди рдореВрд▓реНрдпреЛрдВ рджреНрд╡рд╛рд░рд╛, рдЬреЛ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрддрд░ рдкрд░ рдмрдЪрдд рд╕реЗ рдкрд╣рд▓реЗ рд╕рдВрдмрдВрдзрд┐рдд рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВред
рджреЛрдиреЛрдВ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ рдореВрд▓реНрдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ, рд╡рд┐рд╢реЗрд╖рдХрд░ NULL рдореВрд▓реНрдп рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡; - BuildValueArray рд╡рд┐рдзрд┐ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рддрддреНрд╡реЛрдВ рдХреЗ рдорд╛рди;
- рд╣рдорд╛рд░рд╛ рдХреНрд╖реЗрддреНрд░ рдкреНрд░рдХрд╛рд░ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕рдВрдЧреНрд░рд╣ рд╡рд░реНрдЧ ( % ListOfDataTypes ) рд╣реИред
рд╕рдВрдЧреНрд░рд╣ рд╕рдВрдЧреНрд░рд╣
рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕рдВрдЧреНрд░рд╣ рд╕реВрдЪреА рд╣рдореЗрдВ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреА рд╣реИред рд╕рд░рдгреА рд╕рдВрдЧреНрд░рд╣ рдЗрд╕ рджреЛрд╖ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИред
рдирд┐рдореНрди рд╡рд░реНрдЧ рдмрдирд╛рдПрдВ:
рдХреНрд▓рд╛рд╕ рдбреЗрдореЛ.рдЯреЗрд╕реНрдЯ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд▓рдЧрд╛рддрд╛рд░% рд╣реИ
{
рд╕реВрдЪрдХрд╛рдВрдХ iArrayStr On (ArrayStr (KEYS), ArrayStr (ELEMENTS));
рд╕рдВрдкрддреНрддрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ% рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ ;
% рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдкрддреНрддрд┐ ArrayStr ;
ClassMethod рднрд░реЗрдВ ()
{
рдФрд░ sql ( рдЫреЛрдЯрд╛ рдЯреЗрдмрд▓ рдбреЗрдореЛ ред рдкрд░реАрдХреНрд╖рдг )
& sql ( рдбреЗрдореЛ рдЯреЗрд╕реНрдЯ рдореЗрдВ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░реЗрдВ ) ( str )
рдЕрд╢рдХреНрдд рд╕рдВрдШ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
рд╕рднреА рдХреЛ 'рдЖрдУ' рд╕рдВрдШ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
рд╕рднреА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ 'bbb'
рд╕рднреА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ 'bbb'
рд╕рднреА 'ccc' рдпреВрдирд┐рдпрди рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
рдЕрд╢рдХреНрдд рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
)
& sql ( рдбреЗрдореЛ рдореЗрдВ рдбрд╛рд▓реЗрдВ ред test_ArrayStr ( рдкрд░реАрдХреНрд╖рдг , element_key , arraystr )
1, '0' , 'test1' рд╕рднреА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
1, '1' , 'test2' рд╕рднреА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
1, '2' , 'test3' рд╕рднреА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
2, '0' , 'test1' рд╕рднреА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
2, '1' , 'test2' рд╕рднреА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
2, '2' , 'test3' рд╕рднреА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
3, '-' , '111' рд╕рднреА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
3 рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ , '5.4' , '222' рд╕рднреА
3 рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ , 'рдПрдлрдЬреА' , '333' рд╕рдВрдШ рд╕рднреА
4, '-' , '111' рд╕рднреА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
4 рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ , '5.4' , '222' рд╕рдВрдШ рд╕рднреА
4, 'fg' , '333' рд╕рднреА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
5 рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ , 'рдХреБрдВрдЬреА' , 'рдорд╛рди' рд╕рднреА
6 рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ , 'рдХреБрдВрдЬреА' , 'рдореВрд▓реНрдп'
)
ZWrite ^ Demo.testD
ZWrite ^ Demo.testI
}
}
рдпрд╣рд╛рдБ рдЖрдкрдХреЛ рдХреБрдЫ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
- рд╣рдорд╛рд░рд╛ рдбреЗрдЯрд╛ рдЕрднреА рднреА рджреЛ рдЧреНрд▓реЛрдмрд▓реНрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ: ^ рдХрдХреНрд╖рд╛ рдбреА рдХрд╛ рдирд╛рдо (рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреЗрдЯрд╛) рдФрд░ ^ рдХрдХреНрд╖рд╛ I (рд╕реВрдЪрдХрд╛рдВрдХ) рдХрд╛ рдирд╛рдо;
- рдПрдХ рд╡рд░реНрдЧ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджреЛ рдЯреЗрдмрд▓ рд╣реИрдВ: рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдбреЗрдореЛ.рдЯреЗрд╕реНрдЯ рдФрд░ рдПрдХ рд╕рд╣рд╛рдпрдХ рдбреЗрдореЛ редest_ArrayStr ;
- Demo.test_ArrayStr рддрд╛рд▓рд┐рдХрд╛ рд╕рд░рдгреА рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ SQL рдПрдХреНрд╕реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╝реАрд▓реНрдб рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рдирдХреЗ рдХреБрдЫ рдирд╛рдо рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИрдВ:
- element_key - рдореБрдЦреНрдп рдорд╛рди (рдлрд╝реАрд▓реНрдб рдирд╛рдо рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИ);
- ArrayStr - рддрддреНрд╡ рдореВрд▓реНрдп;
- рдкрд░реАрдХреНрд╖рдг - рдореВрд▓ рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рд▓рд┐рдВрдХ рдбреЗрдореЛ ред рдЯреЗрд╕реНрдЯ ;
- рдЖрдИрдбреА - рд╕реЗрд╡рд╛ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА, рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рд╛рд░реВрдк рдкрд░реАрдХреНрд╖рдг рд╣реИред рддрддреНрд╡_рдХреА (рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдирд╛рдо рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИ);
- рд╣рдорд╛рд░реЗ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕рдВрдЧреНрд░рд╣ рд╡рд░реНрдЧ ( % ArrayOfDataTypes ) рд╣реИред
рддреЛ,
рднрд░рдг () рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рдж рд╣рдорд╛рд░реЗ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧреА:
рддрд╛рд▓рд┐рдХрд╛ рдХрд╛
рдбреЗрдореЛрдЖрдИрдбреА | str |
---|
1 | (рд╢реВрдиреНрдп) |
2 | aaa |
3 | bbb |
4 | bbb |
5 | рд╕реАрд╕реАрд╕реА |
6 | (рд╢реВрдиреНрдп) |
рддрд╛рд▓рд┐рдХрд╛
Demo.test_ArrayStrрдЖрдИрдбреА | рдХрд╕реМрдЯреА | element_key | ArrayStr |
---|
рез || реж | 1 | 0 | test1 |
рез || рез | 1 | 1 | test2 |
рез || реи | 1 | 2 | test3 |
2 || 0 | 2 | 0 | test1 |
2 || 1 | 2 | 1 | test2 |
2 || 2 || | 2 | 2 | test3 |
3 || 5.4 | 3 | 5.4 | 222 |
3 || - | 3 | - | 111 |
3 || fg | 3 | FG | 333 |
4 || 5.4 | 4 | 5.4 | 222 |
4 || - | 4 | - | 111 |
4 || fg | 4 | FG | 333 |
5 || рдХреБрдВрдЬреА | 5 | рдХреБрдВрдЬреА | рдореВрд▓реНрдп |
6 || рдХреБрдВрдЬреА | 6 | рдХреБрдВрдЬреА | рдореВрд▓реНрдп |
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдХреЗ рдмрдЬрд╛рдп рджреЛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЕрдм рдЙрдирдХреЗ рдмреАрдЪ
рдЬреЛрдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред
SQL рдХреЗ рд▓рд┐рдП Cach├й DBMS рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рд╡рд╕реНрддреБ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, "-" рдХреБрдВрдЬреА рдФрд░ рддрддреНрд╡ "111" рдХреЗ рд╕рд╛рде рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП
Demo.test рд╕реЗ
str рдлрд╝реАрд▓реНрдб
рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╣рдорд╛рд░реА рдкрд░реАрдХреНрд╖рд╛ рдХреНрд╡реЗрд░реА рдирд┐рдореНрди рд░реВрдк рд▓реЗрдЧреА:
рдЯреЗрд╕реНрдЯ рдЖрдИрдбреА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ , рдкрд░реАрдХреНрд╖рдг -> рдбреЗрдореЛ рд╕реЗ рдореБрдХреНрдд ред test_ArrayStr рдЬрд╣рд╛рдВ element_key = '-' рдФрд░ arraystr = '111'
рдпрд╛ рдРрд╕реЗ
% ID рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ , рдбреЗрдореЛ рд╕реЗ рдореБрдХреНрдд ред рдкрд░реАрдХреНрд╖рдг рдЬрд╣рд╛рдБ test_ArrayStr -> element_key = '-' рдФрд░ test_ArrayStr -> arraystr = 111 '
рдкрд░рд┐рдгрд╛рдо:
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдФрд░ рдХреЛрдИ
JOIN рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рд╕рднреА рдбреЗрдЯрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВ рдФрд░ Cach├й рдЗрди рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА "рд╕рдВрдмрдВрдзрд┐рддрддрд╛" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдлрд╝реАрд▓реНрдб рдХреЛ рджреЛрдиреЛрдВ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
Demo.test рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ
test_ArrayStr рдлрд╝реАрд▓реНрдб рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рдо рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рддрд╛рд▓рд┐рдХрд╛ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред
рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ
рдпрд╣рд╛рдБ рд╡рд░реНрдгрд┐рдд рдЗрдВрдбреЗрдХреНрд╕рд┐рдВрдЧ рдореИрдХреЗрдирд┐рдЬрд╝реНрдо рдХрд╛ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдХреБрдЫ рд╕рд┐рд╕реНрдЯрдо рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
% Stream.GlobalCharacterSearchable , рдЬреЛ рдХрд┐рд╕реА рдкрд╛рда рд╕реНрдЯреНрд░реАрдо рдХреЛ рдЕрдиреБрдХреНрд░рдордгрд┐рдд рдХрд░рдиреЗ рдФрд░ SQL рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕реЗ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд▓реЗрдЦ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдЕрдиреБрдХреНрд░рдорд┐рдд рд╕рдВрдЧреНрд░рд╣ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдХрд╡рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЙрдирдХреА рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд┐рдзрддрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП: рдПрдореНрдмреЗрдбреЗрдб, рд╕рдВрдЧреНрд░рд╣реАрдд, рд╕реНрдЯреНрд░реАрдо, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдкрд░рд┐рднрд╛рд╖рд┐рдд, рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рд╛рде, рдФрд░ рдЕрдиреНрдпред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрдирдореЗрдВ рд╕реЗ рдХрдИ рдХреЗ рд╕рд╛рде рдпрд╣ рдПрд╕рдХреНрдпреВрдПрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рдХреБрд╢рд▓ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд▓реЗрдЦрдХ рдХреЛ рдХреБрдЫ рдмрд╣реБрдд рд╣реА рджреБрд░реНрд▓рдн рдорд╛рдорд▓реЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдРрд╕реЗ рд╕рдВрдЧреНрд░рд╣ рдХреА рдмрд╣реБрдд рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреВрд░реНрдг-рдкрд╛рда рдЦреЛрдЬ рдпрд╣рд╛рдВ рдХрд╡рд░ рдирд╣реАрдВ рдХреА рдЧрдИ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрд╕рдХреНрдпреВрдПрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдорд┐рдд рдФрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рдХреНрд╖реЗрддреНрд░ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛,
SqlListType рдФрд░
SqlListDelimiter рдЬреИрд╕реЗ рдЧреБрдгреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ
рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ , рд▓реЗрдХрд┐рди рдПрдХ рдЬрд┐рдЬреНрдЮрд╛рд╕реБ рдкрд╛рдардХ, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ, рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рдЖрдЬрд╝рдорд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ: