Transact SQL рдПрдХ рдмреЗрд╣рддрд░реАрди рднрд╛рд╖рд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЕрдХреНрд╕рд░ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрднреА-рдХрднреА рд╕рдорд╕реНрдпрд╛рдПрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВ рдЬреЛ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдФрд░ / рдпрд╛ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд░реВрдк рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдЗрд╕рдХреА рд╕рд╣рд╛рдпрддрд╛ рд╕реЗ рд╣реЛрддреА рд╣реИрдВред рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рд╣рдбрд╝рддрд╛рд▓реА рдЙрджрд╛рд╣рд░рдг рдЙрдиреНрдирдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреЛ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдпрд╛ рдмрд╕ рдПрдХ рдореБрд╢реНрдХрд┐рд▓ рдФрд░ рдореБрдбрд╝ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред SQL рд╕рд░реНрд╡рд░ 2005 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ, рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдПрдХ CLR рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд╛рд░реНрдпрд╡рд┐рдзрд┐ / рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдХрд░ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдЕрд╕реЗрдВрдмрд▓реА рдХреА рдмрд╣рд╛рд▓реА рдФрд░ рддреИрдирд╛рддреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдФрд░ рдореИрдВ рдкреНрд░рдмрдВрдзрди рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЕрдкрдиреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдордХреНрдЦреА рдкрд░ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреА-рдПрд╕рдХреНрдпреВрдПрд▓ рдореЗрдВ рдХреБрдЫ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд╣реИред .Net рдлреНрд░реЗрдорд╡рд░реНрдХ 4 рдореЗрдВ DLR (рдбрд╛рдпрдиреЗрдорд┐рдХ рднрд╛рд╖рд╛ рд░рдирдЯрд╛рдЗрдо) рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпрд╣ рдЕрд╡рд╕рд░ рд╣реИред рд▓реЗрдЦрдХ рдХреА рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг, рдЖрдпрд░рдирдкрд┐рдпрди рдХреЛ рдЗрд╕ рддрд░рд╣ рдХреА рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ред
рдХрджрдо рдирд┐рд░реНрджреЗрд╢ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рджреНрд╡рд╛рд░рд╛ рдХрджрдо рдХрджрдо рдХреЗ рддрд╣рддред
рдкрд░рд┐рдгрд╛рдо рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
рдореИрдВ рдлреЙрд░реНрдо рдХрд╛ рдПрдХ рдлрдВрдХреНрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ
select [dbo].[pyExecute]( ' import re re.findall("\d+"," 2013 !")[0] ' )
рдЕрдЬрдЧрд░ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рдордЧреНрд░ рдХрд╛рд░реНрдп рдФрд░ рдПрдХ рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред
рд╣рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП?
рдЗрд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо SQL Server 2008 R2, Visual Studio 2010 рдФрд░ IronPython 2.6.2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЖрдпрд░рдирдкрд╛рдЗрдерди рдХреЛ рдХреЛрдб рдХреА рд╕рд┐рд░реНрдл рдПрдХ рдкрдВрдХреНрддрд┐ (рдЙрд╕ рдкрд░ рдмрд╛рдж рдореЗрдВ)
рдХреЛ рд╕рд╣реА
рдХрд░рдХреЗ рд╕реНрд░реЛрдд рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рд╕рд░реНрд╡рд░ рд╕реЗрдЯрдЕрдк
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдЖрдзрд╛рд░ рдмрдирд╛рдПрдВред рдЖрдЧреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рдореИрдВ CLR рдирд╛рдордХ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред
рд╕реНрд░реЛрдд рд╕реЗ IronPython рдХрд╛ рдирд┐рд░реНрдорд╛рдг
Sql рд╕рд░реНрд╡рд░ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЕрдЬрдЧрд░ рдЗрдВрдЬрди рдХреЗ рдЖрд░рдореНрдн рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рд╣реЛрдЧрд╛, рдЬрд┐рд╕реЗ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдереЛрдбрд╝рд╛ рд╕рд╣реА рдХрд░рдХреЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, IronPython 2.6.2 рд╕реНрд░реЛрдд рдХреЛрдб рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЦреЛрд▓реЗрдВред рд╣рдореЗрдВ IronPython рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ Modules \ sys.cs рдлрд╝рд╛рдЗрд▓ рдорд┐рд▓рддреА рд╣реИ рдФрд░ GetPrefix рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╣рдо рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рдХреЗ рддрд╣рдд рдирд┐рд░реНрдорд┐рдд рдХреЛрдб рдХреЛ рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, GetPrefix рдлрд╝рдВрдХреНрд╢рди рд╣рдореЗрд╢рд╛ рдПрдХ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рдПрдЧрд╛ред
private static string GetPrefix() { string prefix; #if SILVERLIGHT prefix = String.Empty; #else // prefix prefix = String.Empty; /* try { prefix = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); } catch (SecurityException) { prefix = String.Empty; } */ #endif return prefix; }
рд╣рдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрд╕реЗрдВрдмрд▓рд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред IronPython.dll, IronPython.Modules.dll, Microsoft.Dynamic.dll, Microsoft.Scripting.dll, Microsoft.Scripting.Core.dll, Microsoft.Scripting.Debugging.dll, Microsoft.Scripting.ExtensionAttribute.dllред ред рдореИрдВ рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдЕрд▓рдЧ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреЙрдкреА рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рднреА рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рд╣рдорд╛рд░реА рд╡рд┐рдзрд╛рдирд╕рднрд╛рдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг
рдЕрдм рд╣рдо рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреА рдЕрд╕реЗрдВрдмрд▓реА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдореЗрдВ рджреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдкрд╣рд▓рд╛ pyCore рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдПрдХ рдХреНрд▓рд╛рд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ рдЬреЛ рд╕реАрдзреЗ рдЖрдпрд░рдирдкрд┐рдереЙрди рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред рджреВрд╕рд░рд╛ pySQL рдкреНрд░реЛрдЬреЗрдХреНрдЯ CLR рдХреЗ рд▓рд┐рдП рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ рдЬреЛ pyCore рдЕрд╕реЗрдВрдмрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╣реЛрддрд╛ рд╣реИред
pyCore
рд▓рдХреНрд╖реНрдп рдврд╛рдВрдЪреЗ рдХреЗ рд╕рд╛рде, .net 3.5 рдЪреБрдиреЗрдВред рд╣рдо IronPython.dll, IronPython.Modules.dll, Microsoft.Scripting.dll, Microsoft.Scripting.Core.dll рдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЕрд╕реЗрдВрдмрд▓реА рд▓рд┐рдВрдХ рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ рдХрд┐ рд╣рдореЗрдВ рд╕реНрд░реЛрдд рд╕реЗ рдЖрдпрд░рдирдкрд┐рдереЙрди рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж рдпреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдорд┐рд▓реЗ рд╣реИрдВред рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╕реНрдерд┐рд░ pyCore рд╡рд░реНрдЧ рд╣реЛрдЧрд╛, рдЬреЛ рдЖрдпрд░рдирдкрд╛рдЗрдерди рдЗрдВрдЬрди рдХреЛ рдмрдирд╛рдиреЗ рдФрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдЬреЛ рдЧреБрдВрдЬрд╛рдЗрд╢ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд╛рд░рд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред
PyCore рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛрдб using System; using Microsoft.Scripting.Hosting; using IronPython.Hosting; namespace pyCore {
рдкреНрд░рд╛рдердорд┐рдХ рд░реБрдЪрд┐ рдореЗрдВ py_exec рдлрд╝рдВрдХреНрд╢рди рд╣реИ, рдЬреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд╛рда, рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрдн рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред
рдЕрдм рдЖрдкрдХреЛ CLR рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ pyCore рдЕрд╕реЗрдВрдмрд▓реА рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
CREATE ASSEMBLY PYCORE FROM N'< тАж>\pyCore.dll' WITH PERMISSION_SET = UNSAFE
рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЖрдкрдХреЛ рдирд┐рдореНрди рдлрд╝реЙрд░реНрдо рдХреА рдПрдХ рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧреА:
рдЕрд╕реЗрдВрдмрд▓реА 'pyCore' рд╕рдВрджрд░реНрдн рдЕрд╕реЗрдВрдмрд▓реА 'system.runtime.remoting, рд╕рдВрд╕реНрдХрд░рдг = 2.0.0.0, рд╕рдВрд╕реНрдХреГрддрд┐ = рддрдЯрд╕реНрде, publickeytoken = b77a5c561934e089ред', рдЬреЛ рд╡рд░реНрддрдорд╛рди рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИредрджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдХрд╛рдо рдХреЗ рд▓рд┐рдП pyCore рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИрдВред рдкрд╛рдардХ рдХреЛ рдмреЛрд░ рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рддреБрд░рдВрдд рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреВрдВрдЧрд╛ рдЬреЛ рдЖрдкрдХреА рдЬрд╝рд░реВрд░рдд рдХреА рд╣рд░ рдЪреАрдЬрд╝ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗред FROM рдХреАрд╡рд░реНрдб рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдЕрд╕реЗрдВрдмрд▓реА рдХрд╛ рдкреВрд░рд╛ рд░рд╛рд╕реНрддрд╛ рдмрддрд╛рдирд╛ рд╣реЛрдЧрд╛ред рдЕрдзрд┐рдХрд╛рдВрд╢ рдмрд┐рд▓реНрдб рд╕реНрд░реЛрдд рд╕реЗ рдЖрдпрд░рдирдкрд┐рдереЙрди рдХреЗ рдирд┐рд░реНрдорд╛рдг рд╕реЗ рдЖрддреЗ рд╣реИрдВред System.Runtime.Remoting.dll рдХреА рдЕрд╕реЗрдВрдмрд▓реА C: \ Windows \ Microsoft.NET \ рдлреНрд░реЗрдорд╡рд░реНрдХ \ v2.0.50527 \ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рдзрд╛рдирд╕рднрд╛рдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ CREATE ASSEMBLY ExtensionAttribute FROM N'< тАж>\Microsoft.Scripting.ExtensionAttribute.dll' WITH PERMISSION_SET = UNSAFE CREATE ASSEMBLY ScriptingCore FROM N'< тАж>\Microsoft.Scripting.Core.dll' WITH PERMISSION_SET = UNSAFE CREATE ASSEMBLY Scripting FROM N'< тАж>\Microsoft.Scripting.dll' WITH PERMISSION_SET = UNSAFE CREATE ASSEMBLY SystemRuntimeRemoting FROM N'C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Runtime.Remoting.dll' WITH PERMISSION_SET = UNSAFE CREATE ASSEMBLY MicrosoftDynamic FROM N'< тАж>\Microsoft.Dynamic.dll' WITH PERMISSION_SET = UNSAFE CREATE ASSEMBLY ScriptingDebugging FROM N'< тАж>\Microsoft.Scripting.Debugging.dll' WITH PERMISSION_SET = UNSAFE CREATE ASSEMBLY IronPythonModules FROM N'< тАж>\IronPython.Modules.dll' WITH PERMISSION_SET = UNSAFE CREATE ASSEMBLY PYCORE FROM N'< тАж>\pyCore.dll' WITH PERMISSION_SET = UNSAFE
pySQL
рдХрдбрд╝реА рдореЗрд╣рдирдд рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдпрд╣ SQL рд╕рд░реНрд╡рд░ рд╕реЗ рдЙрдкрд▓рдмреНрдз рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдЪрд▓реЛ CLR рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдХрдиреЗрдХреНрд╢рди рд▓рд╛рдЗрди рдореЗрдВ рд╣рдо рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВрдЧреЗред рдЕрдм рдЖрдкрдХреЛ pyCore рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЬрдм рдЖрдк рдПрдХ рдирдпрд╛ рд▓рд┐рдВрдХ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдореМрдЬреВрдж рд╕рднреА рдЕрд╕реЗрдВрдмрд▓реА рджреЗрдЦреЗрдВрдЧреЗред рдЙрдирдореЗрдВ рд╕реЗ рд╣рдо pyCore, Scripting рдФрд░ ScriptingCore рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВред
рд╕реАрдПрд▓рдЖрд░ рд╕рдорд╛рд░реЛрд╣
рдПрдХ рдирдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ - рдПрдХ рдХрд╕реНрдЯрдо рдлрд╝рдВрдХреНрд╢рдиред
public partial class UserDefinedFunctions {
рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдХреБрдЫ рднреА рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ - рдкреНрд░рддреНрдпрдХреНрд╖ py_exec рдХреЙрд▓ рдФрд░ рддрд░реНрдХ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рдиред рдпрд╣рд╛рдВ рджреЛ рд╕рдВрднрд╛рд╡рд┐рдд рдЙрдкрдпреЛрдЧ рд╣реИрдВ: рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд╛рда рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╕рдордп рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ рдЖрд░реНрдЧреНрд╕ рд╕рд░рдгреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЧреБрдЬрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреИрд░рд╛рдореАрдЯрд░ред рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдЕрдзрд┐рдХ рдкрдардиреАрдп рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред
рдЬрдм рдЖрдк SQL рд╕рд░реНрд╡рд░ рдореЗрдВ CLR рдлрд╝рдВрдХреНрд╢рди рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддреА рд╣реИ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХрд╛рд░рдг рд╕реЗ рдкрд░рдорд╕ рдХреАрд╡рд░реНрдб рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИред рдирддреАрдЬрддрди, рдЖрдкрдХреЛ рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдШреЛрд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдореЗрдВ, рддреАрди рд╕реЗ рдЪрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╢рд╛рдпрдж рд╣реА рдХрднреА рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕реАрдорд╛ рдирд╣реАрдВ рд╣реИред
рд╕реАрдПрд▓рдЖрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛
public partial class StoredProcedures {
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдереЛрдбрд╝реА рдЕрд▓рдЧ рд╣реИред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рд╣рдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ SqlPipe рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рд▓рд┐рдВрдХ рдХрд░рддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рдЖрдк рдЯреЗрдмрд▓ рд░рд┐рдЬрд▓реНрдЯ рд▓реМрдЯрд╛ рд╕рдХреЗрдВ рдФрд░ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХреЗрдВред
рдПрдХрддреНрд░реАрдХрд░рдг рд╕рдорд╛рд░реЛрд╣
Transact SQL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рдордЧреНрд░ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХрдорд╛рддреНрд░ рд╡рд┐рдХрд▓реНрдк рд╕реАрдПрд▓рдЖрд░ рдЕрд╕реЗрдВрдмрд▓рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рдпрд╣ рд╕реАрдПрд▓рдЖрд░ рдХреЗ рдХреБрд▓ рдХрд╛рд░реНрдп рдХреА рд╕рдВрд░рдЪрдирд╛ рдкрд░ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдЗрддрдирд╛ рд╕реНрдкрд╖реНрдЯ рдХреНрдпреЛрдВ рд╣реИред
рдПрдЧреНрд░реАрдЧреЗрдЯ рдлрдВрдХреНрд╢рди рдХреЛрдб рд╣рдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЙрд╕рдХреЗ рд░рд╛рдЬреНрдп рдФрд░ рдордзреНрдпрд╡рд░реНрддреА рдЧрдгрдирд╛ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдмрдЪрд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП IBinarySerialize рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ Init рдлрд╝рдВрдХреНрд╢рди рдХреЛрдИ рддрд░реНрдХ рдирд╣реАрдВ рд▓реЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП Accumulate рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд╣рд▓реА рдмрд╛рд░ рдЪрд▓рд╛рдиреЗ рдкрд░ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рд╣рдорд╛рд░рд╛ рдПрдХрддреНрд░реАрдХрд░рдг рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдирд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЧреНрд░рдВрдереЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЧреНрд░рдВрде рд╕реНрд╡рдпрдВ рд╡рд╕реНрддреБ рдХреЗ рдЖрдВрддрд░рд┐рдХ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдХреНрд░рдордмрджреНрдз рд╣реЛрддреЗ рд╣реИрдВред
рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ pySQL рдЕрд╕реЗрдВрдмрд▓реА рдмрдирд╛рдирд╛ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдШреЛрд╖рд┐рдд рдХрд░рдирд╛
рдЕрдм рдЬрдм рдЕрд╕реЗрдВрдмрд▓реА рддреИрдпрд╛рд░ рд╣реЛ рдЧрдИ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕реАрдПрд▓рдЖрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
CREATE ASSEMBLY PYSQL FROM N'< тАж>\pySQL.dll' WITH PERMISSION_SET = UNSAFE
рдЕрдм рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░реЗрдВред
рдкрд░рд┐рдгрд╛рдо
рдпрджрд┐ рдЖрдк рдЗрд╕ рдмрд┐рдВрджреБ рддрдХ рдкрдврд╝ рдЪреБрдХреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдХрд╛рдо рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рджреЗрдЦрдХрд░ рдЦреБрдж рдХреЛ рдкреБрд░рд╕реНрдХреГрдд рдХрд░рдиреЗ рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рд╣реИред
рд╕рдорд╛рд░реЛрд╣
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░реЗрдВ - рд▓рд╛рдЗрди рдореЗрдВ рдИрдореЗрд▓ рдкрддреЗ рдвреВрдВрдвреЗрдВред рдЗрд╕рдХреЗ рдмрдирдиреЗ рдкрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╕реАрдзреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛рдПрдЧрд╛ред
select [dbo].[pyFunc]( ' import re mails = re.findall("[.\\-_a-z0-9]+@(?:[a-z0-9][\\-a-z0-9]+\\.)+[az]{2,6}","'+doc+'") result = ": " for mail in mails: result += mail + "," result[:-1] ' ) from ( select ' somebody@gmail.com' doc union select ' person1@mail.ru person2@list.ru' doc ) SAMPLE_DATA
рдкрд░рд┐рдгрд╛рдо:
рдкрд╛рдпрд╛: рдХреЛрдИ@gmail.com
рдорд┐рд▓рд╛: person1 @ mail.ru, person2 @ list.ruрд╡рд╣реА, рд▓реЗрдХрд┐рди рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдПред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ - рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрдВрджрд░ рддрд░реАрдХрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрд╡рд╢реНрдпрдХ рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдШреЛрд╖рдгрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
select [dbo].[pyFunc1]( ' import re mails = re.findall("[.\\-_a-z0-9]+@(?:[a-z0-9][\\-a-z0-9]+\\.)+[az]{2,6}",str(args[0])) result = ": " for mail in mails: result += mail + "," result[:-1] ', SAMPLE_DATA.doc ) from ( select ' somebody@gmail.com' doc union select ' person1@mail.ru person2@list.ru' doc ) SAMPLE_DATA
рдкрд░рд┐рдгрд╛рдо рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдПрдХ рд╣реА рд╣реИред
рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬрдЯрд┐рд▓ рдЧрдгрд┐рддреАрдп рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ SQL рд╕рд░реНрд╡рд░ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рднрд╛рд╡реЛрдВ рдХрд╛ рдЧрддрд┐рд╢реАрд▓ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдпрд╣ sp_execute рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднреА рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред
declare @InputFromula as nvarchar(MAX) SET @InputFromula = 'math.log(math.cosh(int(args[0]))/math.e,int(args[1]))' select [dbo].[pyFunc2] ( 'import math '+@InputFromula, 100,5 )
рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛
рдореИрдВ рдЖрдкрдХреЛ рддреБрд░рдВрдд рдПрдХ рдкреВрд░рд╛ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛ред рдпрд╣рд╛рдВ рд╣рдо SqlPipe рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЯреЗрдХреНрд╕реНрдЯ рдореИрд╕реЗрдЬ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рдзреНрдпрд╛рди рд╕реЗ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рд╣рдо рдПрдХ рдЯреЗрдмрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдбреЗрдЯрд╛ рд╕реЗ рднрд░рддреЗ рд╣реИрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВред
exec pyProc ' import clr clr.AddReference("System.Data") from Microsoft.SqlServer.Server import * from System.Data import * from System import DateTime Pipe.Send(" : !") metadata = ( SqlMetaData(" ", SqlDbType.NVarChar, 12), SqlMetaData(" ", SqlDbType.Int), SqlMetaData(" ", SqlDbType.DateTime) ) record = SqlDataRecord(metadata) record.SetString(0, "bocharovf"); record.SetInt32(1, 1000000); record.SetDateTime(2, DateTime.Now);
рдирд┐рд╖реНрдкрд╛рджрди рдкрд░рд┐рдгрд╛рдо:
рд╣рдо рдПрдХ рд╕рдВрджреЗрд╢ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ: рдЪрд▓реЛ рдЪрд▓реЗрдВ!
рдХрд░реНрдордЪрд╛рд░реА рдХрд╛ рдирд╛рдо | рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реЗрддрди | рд╡реГрджреНрдзрд┐ рдХреА рдЕрдкреЗрдХреНрд╖рд┐рдд рддрд┐рдерд┐ |
bocharovf | 1000000 | 2012-12-31 02: 39: 51.293 |
(1 рдкрдВрдХреНрддрд┐) рдкреНрд░рднрд╛рд╡рд┐рддрдПрдХрддреНрд░реАрдХрд░рдг рд╕рдорд╛рд░реЛрд╣
рд╣рдо рдЕрдкрдиреЗ рдПрдХрддреНрд░реАрдХрд░рдг рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЗрдЦ рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рдХреЗ рд╕рд╛рде рд╕реВрдЪреАрдмрджреНрдз рдХрд░реЗрдВрдЧреЗред рдХреНрд░рдорд╛рдВрдХрди рдФрд░ рдбрд┐рд╕реЗрд░рд┐рдПрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рд╣рдо рдмрд╛рдЗрдирд░реАрд░рдПрдбрд░ рдФрд░ рдмрд╛рдЗрдирд░реАрд╡рд░реНрдЯрд░ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рд╕рдВрджрд░реНрдн рд▓реЗрддреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рджрд┐рдП рдЧрдП рд╣реИрдВред рдкрд░рд┐рдгрд╛рдо рдбреЗрдЯрд╛ рдЪрд░ рдореЗрдВ рдЬрдорд╛ рд╣реЛрддрд╛ рд╣реИред
select dbo.pyAggregate (
рдкрд░рд┐рдгрд╛рдо:
рдмреЛрд▓реА | IsUsed |
рд╕реА #, рдЖрдпрд░рдирдкрд╛рдЗрдерди, рдЯреА-рдПрд╕рдХреНрдпреВрдПрд▓ | рд▓реЗрдЦ рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд |
рдПрдбрд╛, рдХреЛрдмреЛрд▓, рдлреЛрд░рдЯреНрд░рд╛рди, рд▓рд┐рд╕реНрдк | рд▓реЗрдЦ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ |
(2 рдкрдВрдХреНрддрд┐) рдкреНрд░рднрд╛рд╡рд┐рддрдЙрддреНрдкрд╛рджрдХрддрд╛
рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ, рдкреНрд░рджрд░реНрд╢рди рдХрдо рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдорд╛рдирдХ T-SQL REVERSE рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рджрд╛рдИрдВ рд╕реЗ рдмрд╛рдИрдВ рдУрд░ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдФрд░ рдЕрдЬрдЧрд░ рдореЗрдВ рд╕реНрд▓рд╛рдЗрд╕ рдСрдкрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЧрддрд┐ рд▓рдЧрднрдЧ 80 рдЧреБрдирд╛ рднрд┐рдиреНрди рд╣реИред
рд╕реБрд░рдХреНрд╖рд╛
exec pyProc ' from System.Net import WebClient content = WebClient().DownloadString("http://habrahabr.ru/") Pipe.Send(content[:4000]) 1 '
рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реА рдХреНрд╖рдорддрд╛рдПрдВ рдХрд┐рд╕реА рднреА рдЪреАрдЬ рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рд╣рдо рдХрд┐рд╕реА рднреА рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдХрд┐рд╕реА рд╕рдВрд╕рд╛рдзрди рддрдХ рдкрд╣реБрдВрдЪ рдпрд╛ рдбрд┐рд╕реНрдХ рд╕реЗ рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣рдЯрд╛рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЛ рд╕реМрдВрдкрдиреЗ рдФрд░ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдкрд╛рд╕рд┐рдВрдЧ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдмрдЬрд╛рдп
рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рд╡рд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд╣рд╛рдВ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдЖрдкрдХреЛ рдЖрдпрд░рдирдкрд╛рдЗрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреА рд╕рднреА рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЖрдпрд░рдирдкрд╛рдЗрдерди рдХреЗ рдХрд╛рд░реНрдп рдЬрдЯрд┐рд▓ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИрдВ рдЬреЛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐ рдЯреНрд░рд╛рдВрд╕реЗрдХреНрдЯ рдПрд╕рдХреНрдпреВрдПрд▓ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ рдпрд╛ рдмрд╛рд╣рд░реА рд╕реНрд░реЛрддреЛрдВ (рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо, рдЗрдВрдЯрд░рдиреЗрдЯ) рд╕реЗ рдбреЗрдЯрд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИред IronPython рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреЛрдИ рднреА IronRuby рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ .NETред