Cach├й ObjectScript рдореЗрдВ рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЛрдб

InterSystems Cach├й ObjectScript (COS) рднрд╛рд╖рд╛ рд╣рд░ рд╕рд╛рд▓ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд░рд╣реА рд╣реИ, рдЗрд╕рдореЗрдВ рдирдИ рдХрдорд╛рдВрдб рдФрд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝реА рдЬрд╛рддреА рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕ рд╕рдордп, COS рдореЗрдВ рджрд┐рдирдЪрд░реНрдпрд╛ рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдХреА рд╡рд╕реНрддреБрдПрдВ рдирд╣реАрдВ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН, рдПрдХ рджрд┐рдирдЪрд░реНрдпрд╛ (рдХрд╛рд░реНрдп, рд╡рд┐рдзрд┐) рдХреЛ рдПрдХ рджрд┐рдирдЪрд░реНрдпрд╛ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдПрдХ рджрд┐рдирдЪрд░реНрдпрд╛ рд╕реЗ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрди рд╕реАрдорд╛рдУрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рд╣реИрдВред

рдмрд┐рд▓реНрд▓реА рдХреЗ рддрд╣рдд, рдЙрдк-рдХреЛрдб рдХреЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЛрдб рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рдХрдИ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рджреЛ рд╣реИрдВ:

рдХреНрд▓рд╛рд╕рдореИрде рдСрд▓рдкрд░реНрд╕рдирд╡рд┐рде ()
{
рд╕реЗрдЯ rs = ## рд╡рд░реНрдЧ ( % рдкрд░рд┐рдгрд╛рдо )ред % рдирдпрд╛ ()
рдЖрд░ рдПрд╕ рдПрд╕ рддреИрдпрд╛рд░ рдХрд░реЗрдВ ( "рдирдореВрдирд╛ рд╕реЗ рдЖрдИрдбреА рдЪреБрдиреЗрдВред рдЬрд╣рд╛рдВ рд░реВрдЯ (рдирд╛рдо, 1,1) = 'рдП'" )
рдЖрд░ рдПрд╕ рдПрд╕ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ ()
рдЬрдмрдХрд┐ рдЖрд░.рдПрд╕. рдЕрдЧрд▓рд╛ () {
рд╕реЗрдЯ p = ## рд╡рд░реНрдЧ ( Sample.Person )ред % OpenId ( rs ред Get ( "ID" ))
рд╕реЗрдЯ рдкреА ред рдХрд╛рд░реНрдпрд╛рд▓рдп = "рдорд╛рд╕реНрдХреЛ"
рдкреА рд▓рд┐рдЦреЛ ред рдирд╛рдо , "" , рдкреА ред рдПрд╕рдПрд╕рдПрди ,!
рдорд╛рд░ рдбрд╛рд▓реЛ рдкреА
}
rs рдорд╛рд░ рдбрд╛рд▓реЛ
}
ClassMethod AllCompaniesWithO ()
{
рд╕реЗрдЯ rs = ## рд╡рд░реНрдЧ ( % рдкрд░рд┐рдгрд╛рдо )ред % рдирдпрд╛ ()
рдЖрд░ рдПрд╕ рдПрд╕ рддреИрдпрд╛рд░ рдХрд░реЗрдВ ( "рдирдореВрдирд╛ рд╕реЗ рдЖрдИрдбреА рдЪреБрдиреЗрдВред рдЬрд╣рд╛рдВ рд░реВрдЯ (рдирд╛рдо, 1,1) = 'рдУ'" )
рдЖрд░ рдПрд╕ рдПрд╕ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ ()
рдЬрдмрдХрд┐ рдЖрд░.рдПрд╕. рдЕрдЧрд▓рд╛ () {
рд╕реЗрдЯ p = ## рд╡рд░реНрдЧ ( Sample.Company )ред % OpenId ( rs ред Get ( "ID" ))
рд╕реЗрдЯ рдкреА ред рдирд╛рдо = "OOO" _ рдкреА ред рдирд╛рдо
рдкреА рд▓рд┐рдЦреЛ ред рдирд╛рдо ,!
рдорд╛рд░ рдбрд╛рд▓реЛ рдкреА
}
rs рдорд╛рд░ рдбрд╛рд▓реЛ
}

рдЧрддрд┐рд╢реАрд▓ SQL -% SQL.Statement рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рджреЛ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдХреЛрдб рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕% ResultSet рдХрд╛ рдЙрдкрдпреЛрдЧ рджрд╕ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рджрд╕ рдореЗрдВ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред

рд╣рдо рдЗрди рджреЛ рддрд░реАрдХреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВред

Sample.Person рдХреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реЗрдВред

ClassMethod ProcessPerson ( рдирдореВрдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ p )
{
рд╕реЗрдЯ рдкреА ред рдХрд╛рд░реНрдпрд╛рд▓рдп = "рдорд╛рд╕реНрдХреЛ"
рдкреА рд▓рд┐рдЦреЛ ред рдирд╛рдо , "" , рдкреА ред рдПрд╕рдПрд╕рдПрди ,!
}

рдпрд╣рд╛рдВ рд╣рдо рдРрд╕реЗ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде AllPersonsWithA рд╡рд┐рдзрд┐ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВрдЧреЗ:

do .. OpenAndProcess ( "рдирдореВрдирд╛ рд╕реЗ рдЖрдИрдбреА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред рдЬрд╣рд╛рдВ рд░реВрдЯ (рдирд╛рдо, 1,1) = 'рдП'" , "рдирдореВрдирд╛.рдкрд░реНрд╕рди" , " рдкреНрд░реЛрд╕реЗрд╕рдкрд░реНрд╕рди " )

рдпрд╣рд╛рдВ, рдкрд╣рд▓рд╛ рддрд░реНрдХ рдХреНрд╡реЗрд░реА рд╣реИ, рджреВрд╕рд░рд╛ рдЙрд╕ рд╡рд░реНрдЧ рдХрд╛ рдирд╛рдо рд╣реИ рдЬрд┐рд╕рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рддреАрд╕рд░рд╛ рд╡рд░реНрдЧ рд╡рд┐рдзрд┐ рдХрд╛ рдирд╛рдо рд╣реИ рдЬрд┐рд╕реЗ рдХреНрд╡реЗрд░реА рдкрд░рд┐рдгрд╛рдо рдХреА рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХрдВрдкрдирд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╡рд┐рдзрд┐ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:

ClassMethod ProcessCompany ( c рдирдореВрдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ редCompany )
{
рд╕реЗрдЯ рд╕реА ред рдирд╛рдо = "OOO" _ c ред рдирд╛рдо
рд▓рд┐рдЦрдирд╛ c ред рдирд╛рдо ,!
}

рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВрдЧреЗ:

do .. OpenAndProcess ( "рдирдореВрдирд╛ рд╕реЗ рдЖрдИрдбреА рдЪреБрдиреЗрдВред рдЬрд╣рд╛рдВ рд░реВрдЯ (рдирд╛рдо, 1,1) = 'O'" , "Sample.Company" , "ProcessCompany" )

рдЕрдм, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕реНрд╡рдпрдВ OpenAndProcess рд╡рд┐рдзрд┐:

ClassMethod OpenAndProcess ( рдХреНрд╡реЗрд░реА % рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ , className % рд╕реНрдЯреНрд░рд┐рдВрдЧ , рдХреЙрд▓рдмреИрдХ % рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ )
{
рд╕реЗрдЯ rs = ## рд╡рд░реНрдЧ ( % рдкрд░рд┐рдгрд╛рдо )ред % рдирдпрд╛ ()
рдЖрд░ рдПрд╕ рдПрд╕ рддреИрдпрд╛рд░ ( рдХреНрд╡реЗрд░реА )
рдЖрд░ рдПрд╕ рдПрд╕ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ ()
рдЬрдмрдХрд┐ рдЖрд░.рдПрд╕. рдЕрдЧрд▓рд╛ () {
рд╕реЗрдЯ p = $ classmethod ( className , "% OpenId" , rs ред Get ( "ID" ))
$ classmethod рдХрд░рдирд╛ ( $ classname (), рдХреЙрд▓рдмреИрдХ , рдкреА ) ;
рдорд╛рд░ рдбрд╛рд▓реЛ рдкреА
}
rs рдорд╛рд░ рдбрд╛рд▓реЛ
}

рдлрд╝рдВрдХреНрд╢рди $ classmethod (рд╡рд░реНрдЧ, рд╡рд┐рдзрд┐, arg1, arg2, ...) рдХреНрд▓рд╛рд╕ рд╡рд┐рдзрд┐ рдХреЛ рдХреНрд▓рд╛рд╕ рдХреНрд▓рд╛рд╕ рд╕реЗ рд╡рд┐рдзрд┐ рдирд╛рдо рджреЗрддрд╛ рд╣реИ рдФрд░ рддрд░реНрдХ arg1, arg2, рдЖрджрд┐ рдХреЛ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред

рдЕрдм,% ResultSet рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЛ рдПрдХ рдЕрд▓рдЧ рд╡рд┐рдзрд┐ рдореЗрдВ рд▓реЗ рдЬрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╡рд╣рд╛рдВ рдЬреЛ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рд╡рд╣ рдХрд┐рд╕реА рдХреЛ рднреА рджрд┐рд▓рдЪрд╕реНрдкреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ

рдЬрд╛рд╣рд┐рд░ рд╣реИ, OpenAndProcess рдореЗрдердб рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддрд╛рдХрд┐ рд╡рд╣ рдХрд░рдВрдЯ рд╕реЗ рд╡рд┐рдзрд┐ рдХреЛ рди рдмреБрд▓рд╛рдП, рд▓реЗрдХрд┐рди рдПрдХ рдордирдорд╛рдиреЗ рд╡рд░реНрдЧ рд╕реЗ рдФрд░ рдХреЙрд▓рдмреИрдХ рдХреЗ рд▓рд┐рдП рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдХрдИ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред

рдпрджрд┐ рдХреЙрд▓рдмреИрдХ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реИ, рддреЛ рдЖрдк $ xecute рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдЕрдирд╛рдо рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдирд╛рд▓реЙрдЧ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ OpenAndProcess рд╡рд┐рдзрд┐ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:

ClassMethod OpenAndProcess ( рдХреНрд╡реЗрд░реА % рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ , className % рд╕реНрдЯреНрд░рд┐рдВрдЧ , рдХреЙрд▓рдмреИрдХ % рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ )
{
рд╕реЗрдЯ rs = ## рд╡рд░реНрдЧ ( % рдкрд░рд┐рдгрд╛рдо )ред % рдирдпрд╛ ()
рдЖрд░ рдПрд╕ рдПрд╕ рддреИрдпрд╛рд░ ( рдХреНрд╡реЗрд░реА )
рдЖрд░ рдПрд╕ рдПрд╕ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ ()
рдЬрдмрдХрд┐ рдЖрд░.рдПрд╕. рдЕрдЧрд▓рд╛ () {
рд╕реЗрдЯ p = $ classmethod ( className , "% OpenId" , rs ред Get ( "ID" ))
рд╕реЗрдЯ рд░реЗрд╕ = $ xecute ( рдХреЙрд▓рдмреИрдХ , рдкреА )
рдорд╛рд░ рдбрд╛рд▓реЛ рдкреА
}
rs рдорд╛рд░ рдбрд╛рд▓реЛ
}

рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдПрдХ рд╡рд░реНрдЧ рд╡рд┐рдзрд┐ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВред

рдХреНрд╡реЗрд░реА = "рдирдореВрдирд╛ рд╕реЗ рдЖрдИрдбреА рдЪреБрдиреЗрдВред рдЬрд╣рд╛рдВ рд░реВрдЯ (рдирд╛рдо, 1,1) = 'рдП'"
do .. OpenAndProcess ( рдХреНрд╡реЗрд░реА , "Sample.Person" , "(p) s p.Office =" "рдорд╛рд╕реНрдХреЛ" "w p.Name," "", p.SSN, (q 0 " ))

рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдкрдВрдХреНрддрд┐ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдХреЛрд╖реНрдардХ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВред рдЕрдиреНрдп рд╕рднреА рдЪрд░ рд╡рд░реНрддрдорд╛рди рд╕рдВрджрд░реНрдн рдореЗрдВ рдЦреЛрдЬреЗ рдЬрд╛рдПрдВрдЧреЗред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдПрдХ рдФрдкрдЪрд╛рд░рд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИ, рдФрд░ рдмреА рдХрд╛ рдореВрд▓реНрдп рд╡рд░реНрддрдорд╛рди рд╕рдВрджрд░реНрдн рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

USER> s a = "(in) ret рдЗрди + b"

USER> s b = 10 w $ xecute ( a , 2)
12

USER> s b = 13 w $ xecute ( a , 2)
15

рдХреЛрдб рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП $ xecute рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдиреБрдХрд╕рд╛рди рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдПрдХ рд╣реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдХреБрдЫ рдХрдорд╛рдВрдб рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреА рдЬрд╛рдБрдЪ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рд╣реА рдХреА рдЬрд╛рдПрдЧреАред рджреВрд╕рд░реА рдУрд░, рдРрд╕реЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред

рдкреНрд░рд▓реЗрдЦрди:

Source: https://habr.com/ru/post/In175657/


All Articles