<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5650418390195550931</id><updated>2011-07-08T16:29:34.166+04:00</updated><category term='microsoft'/><category term='sql server 2008'/><category term='GridView'/><category term='programming'/><category term='ASP .NET'/><title type='text'>Alex Renyov blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://alexrenyov.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5650418390195550931/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://alexrenyov.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Alex Renyov aka limpalex</name><uri>http://www.blogger.com/profile/00586800165489315054</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>4</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5650418390195550931.post-8664336586506716804</id><published>2009-08-16T00:03:00.004+04:00</published><updated>2009-08-16T00:08:20.911+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP .NET'/><title type='text'>asp .net development сервер</title><content type='html'>&lt;span style="font-weight: bold;font-size:100%;" &gt;Как сделать так, чтобы asp .net development сервер создал веб-приложение в папке / а не в папке /{имя проекта} ?&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;Наиболее простой способ:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;b style=""&gt;Step 1&lt;/b&gt;: Select the “Tools-&gt;External Tools” menu option in VS or Visual Web Developer.&lt;span style=""&gt;  &lt;/span&gt;This will allow you to configure and add new menu items to your Tools menu.&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;span style="font-family:Arial;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;b style=""&gt;Step 2&lt;/b&gt;: Click the “Add” button to add a new external tool menu item.&lt;span style=""&gt;  &lt;/span&gt;Name it “WebServer on Port 8080” (or anything else you want).&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;span style="font-family:Arial;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;b style=""&gt;Step 3&lt;/b&gt;: For the “Command” textbox setting enter this value: &lt;i style=""&gt;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\WebDev.WebServer.EXE&lt;/i&gt; (note: this points to the web-server that VS usually automatically runs).&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;span style="font-family:Arial;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;b style=""&gt;Step 4&lt;/b&gt;: For the “Arguments” textbox setting enter this value: &lt;i style=""&gt;/port:8080 /path:$(ProjectDir)&lt;/i&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;span style="font-family:Arial;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;b style=""&gt;Step 5&lt;/b&gt;: Select the “Use Output Window” checkbox (this will prevent the command-shell window from popping up.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;Перевод:&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;Выбираем в меню visual studio "tools" - "external toools"&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;Создаем новый элемент "add", выбираем любое имя&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;Command: &lt;/span&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;i style=""&gt;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\WebDev.WebServer.EXE (это путь к серверу в .net framework 2.0, для четвертого фреймворка он будет другой)&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;Arguments: /port:{выбранный нами порт} /path:{путь к каталогу с сайтом}&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;Выбрать use output window&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:100%;"&gt;Все, теперь можно выбирать в меню tools - наше выбранное имя&lt;/span&gt;&lt;i style=""&gt;&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5650418390195550931-8664336586506716804?l=alexrenyov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexrenyov.blogspot.com/feeds/8664336586506716804/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://alexrenyov.blogspot.com/2009/08/asp-net-development.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5650418390195550931/posts/default/8664336586506716804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5650418390195550931/posts/default/8664336586506716804'/><link rel='alternate' type='text/html' href='http://alexrenyov.blogspot.com/2009/08/asp-net-development.html' title='asp .net development сервер'/><author><name>Alex Renyov aka limpalex</name><uri>http://www.blogger.com/profile/00586800165489315054</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5650418390195550931.post-2009791110357267087</id><published>2009-02-04T22:25:00.008+03:00</published><updated>2009-02-04T22:57:20.926+03:00</updated><title type='text'>Context.RewritePath и атрибут action тега form</title><content type='html'>Как известно для того чтобы использовать friendly-urls нужно в обработчике события BeginRequest производить вызов Context.RewritePath и соответственно переписывать url.&lt;br /&gt;Например /help/default.aspx можно заменить на default.aspx?action=help&lt;br /&gt;Но при этом возникает неприятность. При рендеринге формы в атрибут action будет записан уже новый url ( default.aspx?action=help в нашем случае ) Таким образом, при нажатии на любую кнопку пользователю будет возвращена страница уже без дружественного url&lt;br /&gt;&lt;br /&gt;Существует множество способов изменить такое поведение.&lt;br /&gt;Наиболее простой способ - перекрывать метод Render и в нем сначала переписывать значение action а потом вызывать метод базового класса.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="csharp"&gt;&lt;br /&gt;protected override void Render(HtmlTextWriter writer)&lt;br /&gt;{&lt;br /&gt;  Page.Form.Action = Request.RawUrl;&lt;br /&gt;  base.Render(writer);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Однако этот метод не очень гибкий, поскольку нужно либо перекрывать метод Render на каждой странице либо создавать наследника класса Page и использовать его.&lt;br /&gt;Еще один подводный камень - свойство Action класса HtmlForm доступно только в .NET Framework 2.0 SP1. Без сервиспака оно недоступно.&lt;br /&gt;&lt;br /&gt;Поэтому лучше использовать технологию Adapters.&lt;br /&gt;Для этого нужно создать папку App_Browsers и в ней файл name.browser со следующим содержимым&lt;br /&gt;&lt;pre name="code" class="xml"&gt;&lt;br /&gt;&amp;lt;browsers&amp;gt;&lt;br /&gt;  &amp;lt;browser refid="Default"&amp;gt;&lt;br /&gt;    &amp;lt;controladapters&amp;gt;&lt;br /&gt;      &amp;lt;adapter controltype="System.Web.UI.HtmlControls.HtmlForm" adaptertype="HtmlFormAdapter"&amp;gt;&lt;br /&gt;      &amp;lt;/adapter&amp;gt;&lt;br /&gt;    &amp;lt;/controladapters&amp;gt;&lt;br /&gt;  &amp;lt;/browser&amp;gt;&lt;br /&gt;&amp;lt;/browsers&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Остается написать класс HtmlFormAdapter&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="csharp"&gt;&lt;br /&gt;public class HtmlFormAdapter : ControlAdapter&lt;br /&gt;{&lt;br /&gt;    protected override void Render(HtmlTextWriter writer)&lt;br /&gt;    {&lt;br /&gt;        base.Render(new HtmlFormWriter(writer));&lt;br /&gt;    }&lt;br /&gt;    private class HtmlFormWriter : HtmlTextWriter&lt;br /&gt;    {&lt;br /&gt;        public HtmlFormWriter(HtmlTextWriter writer)&lt;br /&gt;            : base(writer)&lt;br /&gt;        {&lt;br /&gt;            InnerWriter = writer.InnerWriter;&lt;br /&gt;        }&lt;br /&gt;        public HtmlFormWriter(TextWriter writer)&lt;br /&gt;            : base(writer)&lt;br /&gt;        {&lt;br /&gt;            InnerWriter = writer;&lt;br /&gt;        }&lt;br /&gt;        public override void WriteAttribute(string key, string value, bool fEncode)&lt;br /&gt;        {&lt;br /&gt;            if ( string.Equals(key, "action", StringComparison.CurrentCultureIgnoreCase) )&lt;br /&gt;            {&lt;br /&gt;                value = HttpContext.Current.Request.RawUrl;&lt;br /&gt;            }&lt;br /&gt;            base.WriteAttribute(key, value, fEncode);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Перекрываем метод WriteAttribute и подменяем аттрибут action&lt;br /&gt;&lt;br /&gt;P.S. существуют и другие методы, о них возможно напишу позже&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5650418390195550931-2009791110357267087?l=alexrenyov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexrenyov.blogspot.com/feeds/2009791110357267087/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://alexrenyov.blogspot.com/2009/02/contextrewritepath-action-form.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5650418390195550931/posts/default/2009791110357267087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5650418390195550931/posts/default/2009791110357267087'/><link rel='alternate' type='text/html' href='http://alexrenyov.blogspot.com/2009/02/contextrewritepath-action-form.html' title='Context.RewritePath и атрибут action тега form'/><author><name>Alex Renyov aka limpalex</name><uri>http://www.blogger.com/profile/00586800165489315054</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5650418390195550931.post-3212173412570332042</id><published>2009-01-14T20:55:00.011+03:00</published><updated>2010-04-07T15:28:45.185+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP .NET'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='GridView'/><title type='text'>Пейджинг в GridView с использованием get параметров</title><content type='html'>Пейджинг в GridView, как известно, производится с помощью параметров, сохраняемых во ViewState, таким образом при каждом обновлении делается POST-запрос.&lt;br /&gt;&lt;br /&gt;Это создает некоторые трудности. В частности, в ссылке не содержится информация о текущей странице, т.е. ее не имеет смысла кому-то передавать. Кроме того при обновлении браузер будет спрашивать передавать ли данные заново на сервер, что раздражает пользователей.&lt;br /&gt;&lt;br /&gt;Естественное решение проблемы - использование GET-параметров. В них можно передавать номер страницы и количество элементов на странице.&lt;br /&gt;&lt;br /&gt;Создаем класс-наследник GridView&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="csharp"&gt;&lt;br /&gt;public class ContentList : GridView&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Сделаем 2 публичных свойства чтоб манипулировать GET-параметрами (чтоб избежать возможных конфликтов)&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="csharp"&gt;&lt;br /&gt;       public  string PageParamName&lt;br /&gt;       {&lt;br /&gt;           get { return pageParamName;  }&lt;br /&gt;           set&lt;br /&gt;           {&lt;br /&gt;               if ( string.Equals(pageSizeParamName, value,&lt;br /&gt;StringComparison.CurrentCultureIgnoreCase) )&lt;br /&gt;                   throw new ArgumentException("parameter names are equal");&lt;br /&gt;               pageParamName = value;&lt;br /&gt;           }&lt;br /&gt;       }&lt;br /&gt;       public string PageSizeParamName&lt;br /&gt;       {&lt;br /&gt;           get { return pageSizeParamName; }&lt;br /&gt;           set&lt;br /&gt;           {&lt;br /&gt;               if (string.Equals(pageParamName, value,&lt;br /&gt;StringComparison.CurrentCultureIgnoreCase))&lt;br /&gt;                   throw new ArgumentException("parameter names are equal");&lt;br /&gt;               pageSizeParamName = value;&lt;br /&gt;           }&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;       private string pageParamName = "page"; //default values&lt;br /&gt;       private string pageSizeParamName = "pagesize";&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Здесь учитываем возможную ошибку, если пользователь попробует установить одинаковые значения параметров.&lt;br /&gt;&lt;br /&gt;Теперь перекрываем метод OnInit, в котором устанавливаем значение размера страницы и номера страницы. Здесь нужно учесть что в C# нумерация массивов начинается с нуля а нам желательно начинать нумерацию с единицы.&lt;br /&gt;&lt;br /&gt;В итоге получим&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="csharp"&gt;&lt;br /&gt;       protected override void OnInit(EventArgs e)&lt;br /&gt;       {&lt;br /&gt;           base.OnInit(e);&lt;br /&gt;&lt;br /&gt;           if (! string.IsNullOrEmpty(Context.Request.QueryString[PageSizeParamName]))&lt;br /&gt;           {&lt;br /&gt;               PageSize = Int32.Parse(Context.Request.QueryString[PageSizeParamName]);&lt;br /&gt;           }&lt;br /&gt;&lt;br /&gt;           if (!string.IsNullOrEmpty(Context.Request.QueryString[PageParamName]))&lt;br /&gt;               PageIndex = Int32.Parse(Context.Request.QueryString[PageParamName]) - 1;&lt;br /&gt;       }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Таким образом данные берутся из GET-параметров. При желании можно проверять, является ли параметр числом и, если не является, игнорировать его. Сделать это несложно.&lt;br /&gt;&lt;br /&gt;Остается последний шаг - перекрыть метод InitializePager и там создать ссылки с нужными GET-параметрами. Подробно описывать его не буду, приведу лишь код функции создающей GET-URL с учетом параметров пейджинга.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="csharp"&gt;&lt;br /&gt;private string createPagedPath(int page, int pagesize)&lt;br /&gt;       {&lt;br /&gt;           string param = string.Empty;&lt;br /&gt;&lt;br /&gt;           foreach ( string s in Context.Request.QueryString.AllKeys )&lt;br /&gt;           {&lt;br /&gt;               if (string.Equals(s, PageParamName,&lt;br /&gt;StringComparison.CurrentCultureIgnoreCase) )&lt;br /&gt;                   continue;&lt;br /&gt;               if (string.Equals(s, PageSizeParamName,&lt;br /&gt;StringComparison.CurrentCultureIgnoreCase))&lt;br /&gt;                   continue;&lt;br /&gt;               param += string.Format("&amp;amp;{0}={1}", s, Context.Request.QueryString[s]);&lt;br /&gt;           }&lt;br /&gt;&lt;br /&gt;           return string.Format("{0}?{1}={2}&amp;amp;{3}={4}{5}",&lt;br /&gt;Context.Request.Path, PageParamName, page, PageSizeParamName, pagesize, param);&lt;br /&gt;       }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Как видно из кода, проверяем все GET-параметры и копируем из них только те, которые не относятся к нашим параметрам с именами PageParamName и PageSizeParamName. Затем берем Path запроса, добавляем к нему параметры пейджинга и исходные параметры, если таковые имеются в запросе.&lt;br /&gt;&lt;br /&gt;P.S. Стоит обратить внимание на изменение свойств PageParamName и PageSizeParamName, желательно прописывать их прямо на странице .aspx и не изменять в коде, поскольку это может привести к труднолокализуемым ошибкам (либо вообще не менять, а оставить значения по умолчанию).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5650418390195550931-3212173412570332042?l=alexrenyov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexrenyov.blogspot.com/feeds/3212173412570332042/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://alexrenyov.blogspot.com/2009/01/gridview-get.html#comment-form' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5650418390195550931/posts/default/3212173412570332042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5650418390195550931/posts/default/3212173412570332042'/><link rel='alternate' type='text/html' href='http://alexrenyov.blogspot.com/2009/01/gridview-get.html' title='Пейджинг в GridView с использованием get параметров'/><author><name>Alex Renyov aka limpalex</name><uri>http://www.blogger.com/profile/00586800165489315054</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5650418390195550931.post-4503105529569931123</id><published>2009-01-09T19:04:00.006+03:00</published><updated>2009-01-14T20:54:51.819+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='sql server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><title type='text'>sql management studio 2008</title><content type='html'>Установил себе наконец sql server 2008 (пока что express with advanced services).&lt;br /&gt;Обнаружил, что наконец-то появился более-менее приличный intellisence в редактировании хранимых процедур.&lt;br /&gt;Как и следовало в общем ожидать, радость продлилась недолго. Например, в нем не поддерживаются временные таблицы.&lt;br /&gt;То есть код&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;INSERT * FROM table INTO #temp&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;и далее&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;SELECT * FROM #temp&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;вызывает ошибку unknown identifier #temp. &lt;span style="font-style: italic;"&gt;Естественно, процедура компилируется.&lt;/span&gt; Так что хорошее начало но работать им видимо придется еще.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5650418390195550931-4503105529569931123?l=alexrenyov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexrenyov.blogspot.com/feeds/4503105529569931123/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://alexrenyov.blogspot.com/2009/01/sql-management-studio-2008.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5650418390195550931/posts/default/4503105529569931123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5650418390195550931/posts/default/4503105529569931123'/><link rel='alternate' type='text/html' href='http://alexrenyov.blogspot.com/2009/01/sql-management-studio-2008.html' title='sql management studio 2008'/><author><name>Alex Renyov aka limpalex</name><uri>http://www.blogger.com/profile/00586800165489315054</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
