<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://devpinoy.org/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Rodel E. Dagumampan : stored procedures</title><link>http://devpinoy.org/blogs/suddenserenity/archive/tags/stored+procedures/default.aspx</link><description>Tags: stored procedures</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>SqlServer: Return Random Records in T-Sql, the GUID way.</title><link>http://devpinoy.org/blogs/suddenserenity/archive/2007/06/21/sqlserver-return-random-records-in-t-sql-the-guid-way.aspx</link><pubDate>Wed, 20 Jun 2007 15:17:00 GMT</pubDate><guid isPermaLink="false">99090821-4da1-4a75-98c2-a35884625ff7:10836</guid><dc:creator>rdagumampan</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devpinoy.org/blogs/suddenserenity/rsscomments.aspx?PostID=10836</wfw:commentRss><comments>http://devpinoy.org/blogs/suddenserenity/archive/2007/06/21/sqlserver-return-random-records-in-t-sql-the-guid-way.aspx#comments</comments><description>&lt;p&gt;In one of the website I have developed, we feature random products displayed on a webpart. This can be done several ways either of the code behind or via t-sql but I think the simplest way to do it is via t-sql with the help of Guid columns.&lt;/p&gt;&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Globally_Unique_Identifier"&gt;Globally Unique Identifier &lt;/a&gt;or GUID is a randomly generated guaranteed unique string originally used to generate reference numbers and keys in softwares. In Sql Server, it can be generated using the NewId() function.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Given GUID is random, adding a GUID column to the original resultset and use it as the sort column surely yields a random result. Sample script below:&lt;/p&gt;&lt;p&gt;

&lt;/p&gt;&lt;div style="background:white none repeat scroll 0%;font-family:Verdana;font-size:8pt;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color:green;"&gt;--&amp;gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;IF EXISTS&lt;/span&gt;(&lt;span style="color:blue;"&gt;SELECT &lt;/span&gt;1 &lt;span style="color:blue;"&gt;FROM &lt;/span&gt;sys.tables &lt;span style="color:blue;"&gt;WHERE Name &lt;/span&gt;= &lt;span style="color:maroon;"&gt;&amp;#39;Product&amp;#39;&lt;/span&gt;)&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;DROP TABLE Product&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;4&lt;/span&gt;&amp;nbsp;GO&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;5&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6&lt;/span&gt;&amp;nbsp;&lt;span style="color:green;"&gt;--create the test product table&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;7&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;CREATE TABLE Product &lt;/span&gt;(&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;8&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; IdProduct &lt;span style="color:blue;"&gt;int PRIMARY KEY IDENTITY&lt;/span&gt;(1001,1),&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;9&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ProductName &lt;span style="color:blue;"&gt;nvarchar&lt;/span&gt;(255),&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;10&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Price &lt;span style="color:blue;"&gt;decimal&lt;/span&gt;(18,2),&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;11&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; AverageRating &lt;span style="color:blue;"&gt;int&lt;/span&gt;,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;12&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ItemViewed &lt;span style="color:blue;"&gt;int&lt;/span&gt;,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;13&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ItemSold &lt;span style="color:blue;"&gt;int&lt;/span&gt;,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;14&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SortOrder &lt;span style="color:blue;"&gt;int&lt;/span&gt;,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;15&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; DateCreated &lt;span style="color:blue;"&gt;smalldatetime&lt;/span&gt;,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;16&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; LastUpdated &lt;span style="color:blue;"&gt;smalldatetime&lt;/span&gt;)&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;17&lt;/span&gt;&amp;nbsp;GO&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;18&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;19&lt;/span&gt;&amp;nbsp;&lt;span style="color:green;"&gt;--initialize table with test data&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;20&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;INSERT INTO Product VALUES&lt;/span&gt;(&lt;span style="color:maroon;"&gt;&amp;#39;Item 1&amp;#39;&lt;/span&gt;, 10.00, 1, 99, 23, 1000, &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;(), &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;());&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;21&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;INSERT INTO Product VALUES&lt;/span&gt;(&lt;span style="color:maroon;"&gt;&amp;#39;Item 2&amp;#39;&lt;/span&gt;, 21.00, 2, 97, 56, 1002, &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;(), &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;());&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;22&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;INSERT INTO Product VALUES&lt;/span&gt;(&lt;span style="color:maroon;"&gt;&amp;#39;Item 3&amp;#39;&lt;/span&gt;, 11.00, 3, 95, 23, 1001, &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;(), &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;());&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;23&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;INSERT INTO Product VALUES&lt;/span&gt;(&lt;span style="color:maroon;"&gt;&amp;#39;Item 4&amp;#39;&lt;/span&gt;, 22.00, 4, 93, 65, 1000, &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;(), &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;());&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;24&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;INSERT INTO Product VALUES&lt;/span&gt;(&lt;span style="color:maroon;"&gt;&amp;#39;Item 5&amp;#39;&lt;/span&gt;, 12.00, 5, 91, 54, 1000, &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;(), &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;());&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;25&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;INSERT INTO Product VALUES&lt;/span&gt;(&lt;span style="color:maroon;"&gt;&amp;#39;Item 6&amp;#39;&lt;/span&gt;, 23.00, 6, 89, 12, 1006, &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;(), &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;());&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;26&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;INSERT INTO Product VALUES&lt;/span&gt;(&lt;span style="color:maroon;"&gt;&amp;#39;Item 7&amp;#39;&lt;/span&gt;, 13.00, 8, 87, 89, 1050, &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;(), &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;());&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;27&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;INSERT INTO Product VALUES&lt;/span&gt;(&lt;span style="color:maroon;"&gt;&amp;#39;Item 8&amp;#39;&lt;/span&gt;, 24.00, 9, 85, 21, 1021, &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;(), &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;());&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;28&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;INSERT INTO Product VALUES&lt;/span&gt;(&lt;span style="color:maroon;"&gt;&amp;#39;Item 9&amp;#39;&lt;/span&gt;, 14.00, 1, 98, 67, 1020, &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;(), &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;());&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;29&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;INSERT INTO Product VALUES&lt;/span&gt;(&lt;span style="color:maroon;"&gt;&amp;#39;Item 10&amp;#39;&lt;/span&gt;, 25.00, 3, 99, 78, 1001, &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;(), &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;());&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;30&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;31&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;32&lt;/span&gt;&amp;nbsp;&lt;span style="color:green;"&gt;--create the stored procedures&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;33&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;IF EXISTS &lt;/span&gt;( &lt;span style="color:blue;"&gt;SELECT &lt;/span&gt;&amp;nbsp;&amp;nbsp; *&amp;nbsp; &lt;span style="color:blue;"&gt;FROM &lt;/span&gt;&amp;nbsp;&amp;nbsp; sys.objects&amp;nbsp; &lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;object_id &lt;/span&gt;= &lt;span style="color:blue;"&gt;OBJECT_ID&lt;/span&gt;(N&lt;span style="color:maroon;"&gt;&amp;#39;[dbo].[usp_query_all_featured_product]&amp;#39;&lt;/span&gt;) &lt;span style="color:blue;"&gt;and &lt;/span&gt;type &lt;span style="color:blue;"&gt;IN &lt;/span&gt;(N&lt;span style="color:maroon;"&gt;&amp;#39;P&amp;#39;&lt;/span&gt;, N&lt;span style="color:maroon;"&gt;&amp;#39;PC&amp;#39;&lt;/span&gt;))&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;34&lt;/span&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;DROP PROCEDURE &lt;/span&gt;[dbo].[usp_query_all_featured_product];&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;35&lt;/span&gt;&amp;nbsp;GO&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;36&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;37&lt;/span&gt;&amp;nbsp;&lt;span style="color:green;"&gt;/*------------------------------------------------------------------------------&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;38&lt;/span&gt;&amp;nbsp;&lt;span style="color:green;"&gt;// &amp;lt;procedureInformation&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;39&lt;/span&gt;&amp;nbsp;&lt;span style="color:green;"&gt;// &lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green;"&gt;procedureName : [dbo].[usp_query_all_featured_product]&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;40&lt;/span&gt;&amp;nbsp;&lt;span style="color:green;"&gt;// &lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green;"&gt;description : get random products from a table&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;41&lt;/span&gt;&amp;nbsp;&lt;span style="color:green;"&gt;// &lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green;"&gt;createdBy : rdagumampan&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;42&lt;/span&gt;&amp;nbsp;&lt;span style="color:green;"&gt;// &lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green;"&gt;createdWhen : &lt;/span&gt;&amp;nbsp; &lt;span style="color:green;"&gt;06-20-2007 02:08 AM&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;43&lt;/span&gt;&amp;nbsp;&lt;span style="color:green;"&gt;//&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;44&lt;/span&gt;&amp;nbsp;&lt;span style="color:green;"&gt;// &lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green;"&gt;modification history&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;45&lt;/span&gt;&amp;nbsp;&lt;span style="color:green;"&gt;// &lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green;"&gt;date Modified &lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;span style="color:green;"&gt;remarks&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;46&lt;/span&gt;&amp;nbsp;&lt;span style="color:green;"&gt;// &amp;lt;procedureInformation&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;47&lt;/span&gt;&amp;nbsp;&lt;span style="color:green;"&gt;*/------------------------------------------------------------------------------&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;48&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;49&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;CREATE PROC &lt;/span&gt;[dbo].[usp_query_all_featured_product]&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;50&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @pageIndex [int] = 1,&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green;"&gt;-- current page&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;51&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @pageSize [int] = 999,&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green;"&gt;-- number of rows per page&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;52&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @totalRows [int] &lt;span style="color:blue;"&gt;OUTPUT&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;-- total number of rows&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;53&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;AS&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;54&lt;/span&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;BEGIN&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;55&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;56&lt;/span&gt;&amp;nbsp;&lt;span style="color:green;"&gt;----xx begin unit testing paramters&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;57&lt;/span&gt;&amp;nbsp;&lt;span style="color:green;"&gt;--&amp;nbsp;&amp;nbsp;&amp;nbsp; DECLARE @returnTop int;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;58&lt;/span&gt;&amp;nbsp;&lt;span style="color:green;"&gt;-- SELECT @returnTop = 5;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;59&lt;/span&gt;&amp;nbsp;&lt;span style="color:green;"&gt;----xx end unit testing parameters&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;60&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;span style="color:green;"&gt;--perform attempt to retrieve all records&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;61&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;WITH &lt;/span&gt;result &lt;span style="color:blue;"&gt;AS &lt;/span&gt;(&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;62&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;SELECT&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;63&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; ROW_NUMBER() &lt;span style="color:blue;"&gt;OVER &lt;/span&gt;(&lt;span style="color:blue;"&gt;ORDER BY NewId&lt;/span&gt;() &lt;span style="color:blue;"&gt;ASC&lt;/span&gt;) &lt;span style="color:blue;"&gt;AS &lt;/span&gt;RowNumber,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;64&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; prod.IdProduct,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;65&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; prod.ProductName,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;66&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; prod.Price,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;67&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; prod.AverageRating,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;68&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; prod.ItemViewed,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;69&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; prod.ItemSold,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;70&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; prod.SortOrder,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;71&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; prod.DateCreated,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;72&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; prod.LastUpdated&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;73&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;FROM Product &lt;/span&gt;prod )&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;74&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;SELECT&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;75&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; prod.IdProduct,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;76&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; prod.ProductName,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;77&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; prod.Price,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;78&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; prod.AverageRating,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;79&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; prod.ItemViewed,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;80&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; prod.ItemSold,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;81&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; prod.SortOrder,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;82&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; prod.DateCreated,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;83&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; prod.LastUpdated&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;84&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;FROM &lt;/span&gt;result prod&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;85&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;prod.RowNumber &lt;span style="color:blue;"&gt;BETWEEN &lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;86&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; (@pageIndex - 1) * @pageSize + 1 &lt;span style="color:blue;"&gt;AND &lt;/span&gt;@pageIndex * @pageSize&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;87&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;88&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;SELECT &lt;/span&gt;@totalRows = &lt;span style="color:blue;"&gt;COUNT&lt;/span&gt;(IdProduct) &lt;span style="color:blue;"&gt;FROM Product&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;89&lt;/span&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;END&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;90&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;91&lt;/span&gt;&amp;nbsp;GO&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;92&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;93&lt;/span&gt;&amp;nbsp;&lt;span style="color:green;"&gt;--execute stored product for testing&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;94&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;DECLARE &lt;/span&gt;@totalRows &lt;span style="color:blue;"&gt;INT&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;95&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;EXEC &lt;/span&gt;[usp_query_all_featured_product] @pageIndex = 1, @pageSize = 5, @totalRows = @totalRows ;&lt;/p&gt;


&lt;p&gt;&lt;font color="#a52a2a"&gt;&lt;b&gt;&lt;br /&gt;DISCLAIMER: &lt;/b&gt;Use this script at your own risk. Never execute this script on a production database.&lt;/font&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devpinoy.org/aggbug.aspx?PostID=10836" width="1" height="1"&gt;</description><category domain="http://devpinoy.org/blogs/suddenserenity/archive/tags/.NET/default.aspx">.NET</category><category domain="http://devpinoy.org/blogs/suddenserenity/archive/tags/sql+server+/default.aspx">sql server </category><category domain="http://devpinoy.org/blogs/suddenserenity/archive/tags/how+to/default.aspx">how to</category><category domain="http://devpinoy.org/blogs/suddenserenity/archive/tags/stored+procedures/default.aspx">stored procedures</category><category domain="http://devpinoy.org/blogs/suddenserenity/archive/tags/sql/default.aspx">sql</category><category domain="http://devpinoy.org/blogs/suddenserenity/archive/tags/sequel+server/default.aspx">sequel server</category></item><item><title>.NET: Advanced Data Paging with Sorting In SqlServer 2005</title><link>http://devpinoy.org/blogs/suddenserenity/archive/2007/01/16/net-advanced-data-paging-with-sorting-in-sqlserver-2005.aspx</link><pubDate>Mon, 15 Jan 2007 23:59:00 GMT</pubDate><guid isPermaLink="false">99090821-4da1-4a75-98c2-a35884625ff7:7621</guid><dc:creator>rdagumampan</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devpinoy.org/blogs/suddenserenity/rsscomments.aspx?PostID=7621</wfw:commentRss><comments>http://devpinoy.org/blogs/suddenserenity/archive/2007/01/16/net-advanced-data-paging-with-sorting-in-sqlserver-2005.aspx#comments</comments><description>&lt;p&gt;dwarvend, a former teammate in my frist company once asked me about data 
paging large resulsets in ASP.NET. Data paging in SQL Server 2005 is relatively 
easy with new RowNumber feature but supporting dynamic sorting is little&amp;nbsp; 
tricky. I have this executable to script to demonstrate this sorting.&lt;/p&gt;




&lt;p&gt;

&lt;/p&gt;


&lt;div style="background:white none repeat scroll 0% 50%;font-family:Verdana;font-size:8pt;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;
&lt;p style="margin:0px;"&gt;

&lt;/p&gt;&lt;div style="background:white none repeat scroll 0%;font-family:Verdana;font-size:8pt;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;--check if table already exists&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;IF EXISTS&lt;/span&gt;(&lt;span style="color:blue;"&gt;SELECT &lt;/span&gt;1 &lt;span style="color:blue;"&gt;FROM &lt;/span&gt;sys.tables &lt;span style="color:blue;"&gt;WHERE Name &lt;/span&gt;= &lt;span style="color:maroon;"&gt;'Product'&lt;/span&gt;)&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;DROP TABLE Product&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;GO&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;--create the test product table&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;CREATE TABLE Product &lt;/span&gt;(&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; IdProduct &lt;span style="color:blue;"&gt;int PRIMARY KEY IDENTITY&lt;/span&gt;(1,1000),&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ProductName &lt;span style="color:blue;"&gt;nvarchar&lt;/span&gt;(255),&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Price &lt;span style="color:blue;"&gt;decimal&lt;/span&gt;(18,2),&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; AverageRating &lt;span style="color:blue;"&gt;int&lt;/span&gt;,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ItemViewed &lt;span style="color:blue;"&gt;int&lt;/span&gt;,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ItemSold &lt;span style="color:blue;"&gt;int&lt;/span&gt;,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SortOrder &lt;span style="color:blue;"&gt;int&lt;/span&gt;,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; DateCreated &lt;span style="color:blue;"&gt;smalldatetime&lt;/span&gt;,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; LastUpdated &lt;span style="color:blue;"&gt;smalldatetime&lt;/span&gt;)&lt;/p&gt;
&lt;p style="margin:0px;"&gt;GO&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;--initialize table with test data&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;INSERT INTO Product VALUES&lt;/span&gt;(&lt;span style="color:maroon;"&gt;'Item &lt;/span&gt; &lt;span style="color:maroon;"&gt;1'&lt;/span&gt;, 10.00, 1, 99, 23, 1000, &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;(), &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;());&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;INSERT INTO Product VALUES&lt;/span&gt;(&lt;span style="color:maroon;"&gt;'Item &lt;/span&gt; &lt;span style="color:maroon;"&gt;2'&lt;/span&gt;, 21.00, 2, 97, 56, 1002, &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;(), &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;());&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;INSERT INTO Product VALUES&lt;/span&gt;(&lt;span style="color:maroon;"&gt;'Item &lt;/span&gt; &lt;span style="color:maroon;"&gt;3'&lt;/span&gt;, 11.00, 3, 95, 23, 1001, &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;(), &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;());&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;INSERT INTO Product VALUES&lt;/span&gt;(&lt;span style="color:maroon;"&gt;'Item &lt;/span&gt; &lt;span style="color:maroon;"&gt;4'&lt;/span&gt;, 22.00, 4, 93, 65, 1000, &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;(), &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;());&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;INSERT INTO Product VALUES&lt;/span&gt;(&lt;span style="color:maroon;"&gt;'Item &lt;/span&gt; &lt;span style="color:maroon;"&gt;5'&lt;/span&gt;, 12.00, 5, 91, 54, 1000, &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;(), &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;());&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;INSERT INTO Product VALUES&lt;/span&gt;(&lt;span style="color:maroon;"&gt;'Item &lt;/span&gt; &lt;span style="color:maroon;"&gt;6'&lt;/span&gt;, 23.00, 6, 89, 12, 1006, &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;(), &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;());&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;INSERT INTO Product VALUES&lt;/span&gt;(&lt;span style="color:maroon;"&gt;'Item &lt;/span&gt; &lt;span style="color:maroon;"&gt;7'&lt;/span&gt;, 13.00, 8, 87, 89, 1050, &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;(), &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;());&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;INSERT INTO Product VALUES&lt;/span&gt;(&lt;span style="color:maroon;"&gt;'Item &lt;/span&gt; &lt;span style="color:maroon;"&gt;8'&lt;/span&gt;, 24.00, 9, 85, 21, 1021, &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;(), &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;());&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;INSERT INTO Product VALUES&lt;/span&gt;(&lt;span style="color:maroon;"&gt;'Item &lt;/span&gt; &lt;span style="color:maroon;"&gt;9'&lt;/span&gt;, 14.00, 1, 98, 67, 1020, &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;(), &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;());&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;INSERT INTO Product VALUES&lt;/span&gt;(&lt;span style="color:maroon;"&gt;'Item 10'&lt;/span&gt;, 25.00, 3, 99, 78, 1001, &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;(), &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;());&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;INSERT INTO Product VALUES&lt;/span&gt;(&lt;span style="color:maroon;"&gt;'Item 11'&lt;/span&gt;, 26.00, 4, 96, 43, 1009, &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;(), &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;());&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;INSERT INTO Product VALUES&lt;/span&gt;(&lt;span style="color:maroon;"&gt;'Item 12'&lt;/span&gt;, 28.00, 5, 94, 76, 1008, &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;(), &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;());&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;INSERT INTO Product VALUES&lt;/span&gt;(&lt;span style="color:maroon;"&gt;'Item 13'&lt;/span&gt;, 16.00, 6, 92, 72, 1007, &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;(), &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;());&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;INSERT INTO Product VALUES&lt;/span&gt;(&lt;span style="color:maroon;"&gt;'Item 14'&lt;/span&gt;, 30.00, 7, 90, 62, 1009, &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;(), &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;());&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;INSERT INTO Product VALUES&lt;/span&gt;(&lt;span style="color:maroon;"&gt;'Item 15'&lt;/span&gt;, 17.00, 2, 88, 25, 1010, &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;(), &lt;span style="color:blue;"&gt;GETDATE&lt;/span&gt;());&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;--create the stored procedures &lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;IF EXISTS &lt;/span&gt;( &lt;span style="color:blue;"&gt;SELECT&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;*&amp;nbsp; &lt;span style="color:blue;"&gt;FROM&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;sys.objects&amp;nbsp; &lt;span style="color:blue;"&gt;WHERE&amp;nbsp;&amp;nbsp;&amp;nbsp; object_id &lt;/span&gt;= &lt;span style="color:blue;"&gt;OBJECT_ID&lt;/span&gt;(N&lt;span style="color:maroon;"&gt;'[dbo].[usp_query_all_product]'&lt;/span&gt;) &lt;span style="color:blue;"&gt;and &lt;/span&gt;type &lt;span style="color:blue;"&gt;IN &lt;/span&gt;(N&lt;span style="color:maroon;"&gt;'P'&lt;/span&gt;, N&lt;span style="color:maroon;"&gt;'PC'&lt;/span&gt;))&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp; &lt;span style="color:blue;"&gt;DROP PROCEDURE &lt;/span&gt;[dbo].[usp_query_all_product];&lt;/p&gt;
&lt;p style="margin:0px;"&gt;GO&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;/*------------------------------------------------------------------------------&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// &amp;lt;auto-generated/&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// &amp;lt;procedureInformation&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// &lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green;"&gt;procedureName:[dbo].[usp_query_all_product]&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// &lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green;"&gt;description:&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// &lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green;"&gt;createdBy:rdagumampan&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// &lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green;"&gt;createdWhen: &lt;/span&gt;&amp;nbsp; &lt;span style="color:green;"&gt;01-16-2007 02:08:04&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;//&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// &lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green;"&gt;modification history&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// &lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green;"&gt;date Modified &lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;span style="color:green;"&gt;remarks&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// &amp;lt;procedureInformation&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;*/------------------------------------------------------------------------------ &lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;CREATE PROC &lt;/span&gt;[dbo].[usp_query_all_product]&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @sortColumn &lt;span style="color:blue;"&gt;nvarchar&lt;/span&gt;(32) = &lt;span style="color:maroon;"&gt;'ItemSold'&lt;/span&gt;,&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green;"&gt;-- column used for sorting&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @sortDirection &lt;span style="color:blue;"&gt;nvarchar&lt;/span&gt;(32) = &lt;span style="color:maroon;"&gt;'DESC'&lt;/span&gt;,&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green;"&gt;-- column sorting behavious DESC | ASC&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @pageIndex [int] = 1,&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green;"&gt;-- page index&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @pageSize [int] = 999,&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green;"&gt;-- number of rows returned per page&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @totalRows [int] &lt;span style="color:blue;"&gt;OUTPUT&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green;"&gt;-- number rows of all pages&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;AS&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp; &lt;span style="color:blue;"&gt;BEGIN&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;----xx begin unit testing paramters&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;----xx end unit testing parameters&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;span style="color:green;"&gt;--perform attempt to retrieve all records&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;WITH &lt;/span&gt;result &lt;span style="color:blue;"&gt;AS &lt;/span&gt;(&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;SELECT&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; ROW_NUMBER() &lt;span style="color:blue;"&gt;OVER &lt;/span&gt;(&lt;span style="color:blue;"&gt;ORDER BY &lt;/span&gt;prod.SortOrder &lt;span style="color:blue;"&gt;DESC&lt;/span&gt;) &lt;span style="color:blue;"&gt;AS &lt;/span&gt;row_number,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; prod.IdProduct,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; prod.ProductName,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; prod.Price,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; prod.AverageRating,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; prod.ItemViewed,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; prod.ItemSold,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; prod.SortOrder,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; prod.DateCreated,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; prod.LastUpdated&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;FROM Product &lt;/span&gt;prod )&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;SELECT&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; prod.IdProduct,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; prod.ProductName,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; prod.Price,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; prod.AverageRating,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; prod.ItemViewed,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; prod.ItemSold,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; prod.SortOrder,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; prod.DateCreated,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; prod.LastUpdated&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;FROM &lt;/span&gt;result prod&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;row_number &lt;span style="color:blue;"&gt;BETWEEN &lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; (@pageIndex - 1) * @pageSize + 1 &lt;span style="color:blue;"&gt;AND &lt;/span&gt;@pageIndex * @pageSize&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;ORDER BY&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;CASE UPPER&lt;/span&gt;(@sortDirection)&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;WHEN &lt;/span&gt;&lt;span style="color:maroon;"&gt;'DESC' &lt;/span&gt;&lt;span style="color:blue;"&gt;THEN&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;CASE &lt;/span&gt;@sortColumn&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;WHEN &lt;/span&gt;&lt;span style="color:maroon;"&gt;'SortOrder' &lt;/span&gt;&lt;span style="color:blue;"&gt;THEN &lt;/span&gt;prod.SortOrder &lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;WHEN &lt;/span&gt;&lt;span style="color:maroon;"&gt;'LastUpdated' &lt;/span&gt;&lt;span style="color:blue;"&gt;THEN &lt;/span&gt;prod.LastUpdated &lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;WHEN &lt;/span&gt;&lt;span style="color:maroon;"&gt;'Price' &lt;/span&gt;&lt;span style="color:blue;"&gt;THEN &lt;/span&gt;prod.Price &lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;WHEN &lt;/span&gt;&lt;span style="color:maroon;"&gt;'AverageRating' &lt;/span&gt;&lt;span style="color:blue;"&gt;THEN &lt;/span&gt;prod.AverageRating &lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;WHEN &lt;/span&gt;&lt;span style="color:maroon;"&gt;'ItemSold' &lt;/span&gt;&lt;span style="color:blue;"&gt;THEN &lt;/span&gt;prod.ItemSold &lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;END&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;END&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;DESC&lt;/span&gt;,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;CASE UPPER&lt;/span&gt;(@sortDirection)&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;WHEN &lt;/span&gt;&lt;span style="color:maroon;"&gt;'ASC' &lt;/span&gt;&lt;span style="color:blue;"&gt;THEN&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;CASE &lt;/span&gt;@sortColumn&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;WHEN &lt;/span&gt;&lt;span style="color:maroon;"&gt;'SortOrder' &lt;/span&gt;&lt;span style="color:blue;"&gt;THEN &lt;/span&gt;prod.SortOrder &lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;WHEN &lt;/span&gt;&lt;span style="color:maroon;"&gt;'LastUpdated' &lt;/span&gt;&lt;span style="color:blue;"&gt;THEN &lt;/span&gt;prod.LastUpdated &lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;WHEN &lt;/span&gt;&lt;span style="color:maroon;"&gt;'Price' &lt;/span&gt;&lt;span style="color:blue;"&gt;THEN &lt;/span&gt;prod.Price &lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;WHEN &lt;/span&gt;&lt;span style="color:maroon;"&gt;'AverageRating' &lt;/span&gt;&lt;span style="color:blue;"&gt;THEN &lt;/span&gt;prod.AverageRating &lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;WHEN &lt;/span&gt;&lt;span style="color:maroon;"&gt;'ItemSold' &lt;/span&gt;&lt;span style="color:blue;"&gt;THEN &lt;/span&gt;prod.ItemSold &lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;END&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;END&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;ASC&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;span style="color:green;"&gt;--get total number of results&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;span style="color:blue;"&gt;SELECT &lt;/span&gt;@totalRows = &lt;span style="color:blue;"&gt;COUNT&lt;/span&gt;(prod.IdProduct)&amp;nbsp; &lt;span style="color:blue;"&gt;FROM Product &lt;/span&gt;prod&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp; &lt;span style="color:blue;"&gt;END&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;GO&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;--execute stored product for testing&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;DECLARE &lt;/span&gt;@totalRows &lt;span style="color:blue;"&gt;INT&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;EXEC &lt;/span&gt;[usp_query_all_product] &lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; @sortColumn = &lt;span style="color:maroon;"&gt;'ItemSold'&lt;/span&gt;,&amp;nbsp; &lt;span style="color:green;"&gt;-- SortOrder | LastUpdated | Price | AverageRating | ItemSold &lt;/span&gt; &lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; @sortDirection =&lt;span style="color:maroon;"&gt;'ASC'&lt;/span&gt;,&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;span style="color:green;"&gt;-- ASC DESC&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; @pageIndex= 1,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; @pageSize=5,&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; @totalRows = @totalRows &lt;span style="color:blue;"&gt;OUTPUT&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;SELECT &lt;/span&gt;@totalRows;&lt;/p&gt;
&lt;/div&gt;

&lt;font color="#a52a2a"&gt;&lt;b&gt;&lt;br&gt;DISCLAIMER: &lt;/b&gt;Use this script at your own risk. Never execute this script on a production database.&lt;/font&gt;&lt;br&gt;&lt;br&gt;
&lt;/div&gt;


&lt;div class="shareblock"&gt;&lt;font color="#006400"&gt;&lt;font color="#000000"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt;&lt;/font&gt; &lt;/font&gt;&lt;font color="#008000"&gt;&lt;font color="#006400"&gt;&lt;a title="Email New and Notable 135" href="mailto:?body=http://community.devpinoy.org/blogs/dehranph/archive/2007/01/16/net-advanced-data-paging-with-sorting-in-sqlserver-2005.aspx"&gt;Email it!&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://community.devpinoy.org/blogs/dehranph/archive/2007/01/16/net-advanced-data-paging-with-sorting-in-sqlserver-2005.aspx" title="Submit New and Notable 135 to del.icio.us"&gt;bookmark it!&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://community.devpinoy.org/blogs/dehranph/archive/2007/01/16/net-advanced-data-paging-with-sorting-in-sqlserver-2005.aspx" title="Submit New and Notable 135 to digg.com"&gt;digg it!&lt;/a&gt; | &lt;a href="http://reddit.com/submit?url=http://community.devpinoy.org/blogs/dehranph/archive/2007/01/16/net-advanced-data-paging-with-sorting-in-sqlserver-2005.aspx" title="Submit New and Notable 135 to reddit.com"&gt;reddit!&lt;/a&gt;| &lt;a href="http://www.dotnetkicks.com/kick/?url=http://community.devpinoy.org/blogs/dehranph/archive/2007/01/16/net-advanced-data-paging-with-sorting-in-sqlserver-2005.aspx" title="Submit New and Notable 135 to DotNetKicks.Com"&gt;kick it!&lt;/a&gt;&lt;/font&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devpinoy.org/aggbug.aspx?PostID=7621" width="1" height="1"&gt;</description><category domain="http://devpinoy.org/blogs/suddenserenity/archive/tags/.NET/default.aspx">.NET</category><category domain="http://devpinoy.org/blogs/suddenserenity/archive/tags/sql+server+/default.aspx">sql server </category><category domain="http://devpinoy.org/blogs/suddenserenity/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://devpinoy.org/blogs/suddenserenity/archive/tags/how+to/default.aspx">how to</category><category domain="http://devpinoy.org/blogs/suddenserenity/archive/tags/scripts/default.aspx">scripts</category><category domain="http://devpinoy.org/blogs/suddenserenity/archive/tags/stored+procedures/default.aspx">stored procedures</category><category domain="http://devpinoy.org/blogs/suddenserenity/archive/tags/sequel+server/default.aspx">sequel server</category></item><item><title>L10N: Autosize property of labels on windows forms</title><link>http://devpinoy.org/blogs/suddenserenity/archive/2006/11/08/l10n-autosize-property-of-labels-on-windows-forms.aspx</link><pubDate>Tue, 07 Nov 2006 17:24:00 GMT</pubDate><guid isPermaLink="false">99090821-4da1-4a75-98c2-a35884625ff7:6166</guid><dc:creator>rdagumampan</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devpinoy.org/blogs/suddenserenity/rsscomments.aspx?PostID=6166</wfw:commentRss><comments>http://devpinoy.org/blogs/suddenserenity/archive/2006/11/08/l10n-autosize-property-of-labels-on-windows-forms.aspx#comments</comments><description>Lately, I was wondering why the Autosize property of label on windows forms is set to true, this is annoying and tiring if you love using windows forms designer(yucks! kidding &lt;img src="http://community.devpinoy.org/emoticons/emotion-4.gif" alt="Stick out tongue" /&gt;), because you often want a properly aligned controls and fixed with labels on data entry textboxes.But not until i want to loicalize these labels I realized that this is very helpful on making labels display localized text that extends more than the default text. Most of the time, English text is shorter than dannish, finnish, or scadinavian translations, sometimes its the other way around.&lt;br&gt;&lt;br&gt;HTH!&lt;br&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devpinoy.org/aggbug.aspx?PostID=6166" width="1" height="1"&gt;</description><category domain="http://devpinoy.org/blogs/suddenserenity/archive/tags/.NET/default.aspx">.NET</category><category domain="http://devpinoy.org/blogs/suddenserenity/archive/tags/L10N/default.aspx">L10N</category><category domain="http://devpinoy.org/blogs/suddenserenity/archive/tags/localization/default.aspx">localization</category><category domain="http://devpinoy.org/blogs/suddenserenity/archive/tags/windows+forms/default.aspx">windows forms</category><category domain="http://devpinoy.org/blogs/suddenserenity/archive/tags/controls/default.aspx">controls</category><category domain="http://devpinoy.org/blogs/suddenserenity/archive/tags/sp/default.aspx">sp</category><category domain="http://devpinoy.org/blogs/suddenserenity/archive/tags/scripts/default.aspx">scripts</category><category domain="http://devpinoy.org/blogs/suddenserenity/archive/tags/stored+procedures/default.aspx">stored procedures</category></item><item><title>L10N: The world is flat, start localization on your database</title><link>http://devpinoy.org/blogs/suddenserenity/archive/2006/11/08/l10n-localization-on-database.aspx</link><pubDate>Tue, 07 Nov 2006 17:00:00 GMT</pubDate><guid isPermaLink="false">99090821-4da1-4a75-98c2-a35884625ff7:6092</guid><dc:creator>rdagumampan</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devpinoy.org/blogs/suddenserenity/rsscomments.aspx?PostID=6092</wfw:commentRss><comments>http://devpinoy.org/blogs/suddenserenity/archive/2006/11/08/l10n-localization-on-database.aspx#comments</comments><description>When you are developing software product to be catered to diverse customers, it must be a standard to localized your software. With .NET this has never been easy, on .NET 2.0 its even easier with striongly typed resource files. But localizing application must be part of the architectture and should not be done later when product is about to market or when the market demands it to be.&lt;br&gt;&lt;br&gt;The are two main areas to be considered first before you kick it off,&lt;br&gt;&lt;br&gt;1. User Interface&lt;br&gt;These are the buttons, the labels, the error and messages we see while using the application. It is stored on a resource file, loaded at runtime based on specific culture. Localizing the interface can be done by using resource files and special binding features on .NET. Several articles discussing UI localization are available the net.&lt;br&gt;&lt;br&gt;2. Data&lt;br&gt;These are the records we stored on the database, the lookup tables and listings. To have a completely localized application, the data must be considered, the datatypes, the design. Very few discuss this topic on net.&lt;br&gt;&lt;br&gt;To localize a data-intensive application we must start with the architectture where data will be placed; the database. But it is not as simple as we thought, it isnt as simple as using nchar, nvarchar, ntext, and unicode-supported datatypes. The table's design has to be multilingual capable also, I have sample structure of a non-multiligual and multiligual table design.&lt;br&gt;&lt;br&gt;&lt;b&gt;Real-world application&lt;/b&gt;&lt;br&gt;Here I have an Advertisement table, the scenario is you have an ecommerce application available to customers of different countries, it must support limited languages and user must explicitly select the language.&lt;br&gt;&lt;br&gt;&lt;b&gt;Non-Localizable &lt;/b&gt;&lt;br&gt;Without localization in mind we will simply design the table this way,&lt;br&gt;&lt;br&gt;&lt;img src="http://img105.imageshack.us/img105/4937/3aj2.jpg"&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Localizable&lt;/b&gt;&lt;br&gt;Making the table supports multi-languages, we design it this way.&lt;br&gt;&lt;br&gt;&lt;img src="http://img454.imageshack.us/img454/2079/4ii4.jpg"&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;The Fallback Mechanism&lt;/b&gt;&lt;br&gt;The database have to handle event where the application requested for localized records on a specific country that does not exists. In .NET, fallback is handled by returning the neutral resource file. When you request for &lt;b&gt;en-us&lt;/b&gt; and &lt;b&gt;en-us&lt;/b&gt; resource file does not exisits, it will return you the neutral &lt;b&gt;en &lt;/b&gt;resource file. &lt;br&gt;&lt;br&gt;In my example tables above, if user request for &lt;b&gt;en-PH&lt;/b&gt; and &lt;b&gt;en-PH&lt;/b&gt; does not exists, I will check id there is &lt;b&gt;en&lt;/b&gt;, if &lt;b&gt;en&lt;/b&gt; still does not exists, I will return the default text on the Advertisement table. The application is blind how it is being done, it just passed the user locale and the stored procedures returns the localized record. the script goes something lile this:&lt;br&gt;&lt;br&gt;&lt;table cellpadding="0" cellspacing="0"&gt;&lt;tr style="vertical-align:top;line-height:normal;"&gt;&lt;td style="width:40px;text-align:right;"&gt;&lt;pre style="margin:0px;padding:2px;font-family:courier new;font-size:11px;color:gray;"&gt;1&lt;br&gt;2&lt;br&gt;3&lt;br&gt;4&lt;br&gt;5&lt;br&gt;6&lt;br&gt;7&lt;br&gt;8&lt;br&gt;9&lt;br&gt;10&lt;br&gt;11&lt;br&gt;12&lt;br&gt;13&lt;br&gt;14&lt;br&gt;15&lt;br&gt;16&lt;br&gt;17&lt;br&gt;18&lt;br&gt;19&lt;br&gt;20&lt;br&gt;21&lt;br&gt;22&lt;br&gt;23&lt;br&gt;24&lt;br&gt;25&lt;br&gt;26&lt;br&gt;27&lt;br&gt;28&lt;br&gt;29&lt;br&gt;30&lt;br&gt;31&lt;br&gt;32&lt;br&gt;33&lt;br&gt;34&lt;br&gt;35&lt;br&gt;36&lt;br&gt;37&lt;br&gt;38&lt;br&gt; &lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="margin:0px;padding:2px 2px 2px 8px;"&gt;&lt;span style="color:Black;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;DECLARE&lt;/span&gt; @culture &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;nvarchar&lt;/span&gt;(8), @idNeutralCulture &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;int&lt;/span&gt;, @idSpecificCulture &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;int&lt;/span&gt;;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;SELECT&lt;/span&gt; @culture = &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;'en-ph'&lt;/span&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;SELECT&lt;/span&gt; @idSpecificCulture = cul.IdCulture &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;FROM&lt;/span&gt; Culture cul &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;WHERE&lt;/span&gt; cul.Culture = @culture;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;SELECT&lt;/span&gt; @idNeutralCulture = cul.IdCulture &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;FROM&lt;/span&gt; Culture cul &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;WHERE&lt;/span&gt; cul.Culture = &lt;span style="color:Fuchsia;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;LEFT&lt;/span&gt;(@culture,2);&lt;br&gt;&lt;br&gt;&lt;span style="color:Teal;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;--check, specific culture exist&lt;/span&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;IF&lt;/span&gt; &lt;span style="color:Silver;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;EXISTS&lt;/span&gt;(&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;SELECT&lt;/span&gt; 1 &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;FROM&lt;/span&gt; AdvertisementText adtext &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;WHERE&lt;/span&gt; adtext.IdCulture = @idSpecificCulture)&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;BEGIN&lt;/span&gt;&lt;br&gt;  &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;SELECT&lt;/span&gt;&lt;br&gt;      ad.IdAdvertisement, ad.IdProvider&lt;br&gt;      ,ad.IdOrientation, adtext.&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Text&lt;/span&gt;, adtext.HtmlTextDescription&lt;br&gt;      ,adtext.PlainTextDescription, ad.DateWhenToStart, ad.DateWhenToEnd&lt;br&gt;  &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;FROM&lt;/span&gt; Advertisement ad&lt;br&gt;  &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;INNER&lt;/span&gt; &lt;span style="color:Silver;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;JOIN&lt;/span&gt; AdvertisementText adtext &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ON&lt;/span&gt; ad.IdAdvertisement = adtext.IdAdvertisementText &lt;span style="color:Silver;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;AND&lt;/span&gt; adtext.IdCulture;&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;END&lt;/span&gt;&lt;br&gt;&lt;span style="color:Teal;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;--check, neurtal culture exist&lt;/span&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ELSE&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;IF&lt;/span&gt; &lt;span style="color:Silver;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;EXISTS&lt;/span&gt;(&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;SELECT&lt;/span&gt; 1 &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;FROM&lt;/span&gt; AdvertisementText adtext &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;WHERE&lt;/span&gt; adtext.IdCulture = @idNeutralCulture)&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;BEGIN&lt;/span&gt;&lt;br&gt;  &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;SELECT&lt;/span&gt;&lt;br&gt;      ad.IdAdvertisement, ad.IdProvider&lt;br&gt;      ,ad.IdOrientation, adtext.&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Text&lt;/span&gt;, adtext.HtmlTextDescription&lt;br&gt;      ,adtext.PlainTextDescription, ad.DateWhenToStart, ad.DateWhenToEnd&lt;br&gt;  &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;FROM&lt;/span&gt; Advertisement ad&lt;br&gt;  &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;INNER&lt;/span&gt; &lt;span style="color:Silver;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;JOIN&lt;/span&gt; AdvertisementText adtext &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ON&lt;/span&gt; ad.IdAdvertisement = adtext.IdAdvertisementText &lt;span style="color:Silver;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;AND&lt;/span&gt; adtext.IdCulture;  &lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;END&lt;/span&gt;&lt;br&gt;&lt;span style="color:Teal;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;--else, return the default text descriptions&lt;/span&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ELSE&lt;/span&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;BEGIN&lt;/span&gt;&lt;br&gt;  &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;SELECT&lt;/span&gt;&lt;br&gt;      ad.IdAdvertisement, ad.IdProvider&lt;br&gt;      ,ad.IdOrientation, ad.&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Text&lt;/span&gt;, ad.HtmlTextDescription&lt;br&gt;      ,ad.PlainTextDescription, ad.DateWhenToStart, ad.DateWhenToEnd&lt;br&gt;  &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;FROM&lt;/span&gt; Advertisement ad&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;END&lt;/span&gt;&lt;br&gt;&lt;br&gt;scriptedby:rodeldagumampan&lt;br&gt;11.08.2006.04AM&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br&gt;&lt;br&gt;This is part my blog series on my experiences making a multi-lingual application. Keep posted and raise questions if you have as I am also a newbie on this and I believe I learned a lot from other developers ;). HTH, happy coding!&lt;br&gt;&lt;p&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;font color="#008000"&gt;&lt;a title="Email New and Notable 135" href="mailto:?body=http://community.devpinoy.org/blogs/dehranph/archive/2006/11/08/l10n-localization-on-database.aspx"&gt;Email it!&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://community.devpinoy.org/blogs/dehranph/archive/2006/11/08/l10n-localization-on-database.aspx" title="Submit New and Notable 135 to del.icio.us"&gt;bookmark it!&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://community.devpinoy.org/blogs/dehranph/archive/2006/11/08/l10n-localization-on-database.aspx" title="Submit New and Notable 135 to digg.com"&gt;digg it!&lt;/a&gt; | &lt;a href="http://reddit.com/submit?url=http://community.devpinoy.org/blogs/dehranph/archive/2006/11/08/l10n-localization-on-database.aspx" title="Submit New and Notable 135 to reddit.com"&gt;reddit!&lt;/a&gt;| &lt;a href="http://www.dotnetkicks.com/kick/?url=http://community.devpinoy.org/blogs/dehranph/archive/2006/11/08/l10n-localization-on-database.aspx" title="Submit New and Notable 135 to DotNetKicks.Com"&gt;kick it!&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devpinoy.org/aggbug.aspx?PostID=6092" width="1" height="1"&gt;</description><category domain="http://devpinoy.org/blogs/suddenserenity/archive/tags/.NET/default.aspx">.NET</category><category domain="http://devpinoy.org/blogs/suddenserenity/archive/tags/sql+server+/default.aspx">sql server </category><category domain="http://devpinoy.org/blogs/suddenserenity/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://devpinoy.org/blogs/suddenserenity/archive/tags/usability+and+design/default.aspx">usability and design</category><category domain="http://devpinoy.org/blogs/suddenserenity/archive/tags/Development+Process/default.aspx">Development Process</category><category domain="http://devpinoy.org/blogs/suddenserenity/archive/tags/how+to/default.aspx">how to</category><category domain="http://devpinoy.org/blogs/suddenserenity/archive/tags/L10N/default.aspx">L10N</category><category domain="http://devpinoy.org/blogs/suddenserenity/archive/tags/localization/default.aspx">localization</category><category domain="http://devpinoy.org/blogs/suddenserenity/archive/tags/scripts/default.aspx">scripts</category><category domain="http://devpinoy.org/blogs/suddenserenity/archive/tags/stored+procedures/default.aspx">stored procedures</category><category domain="http://devpinoy.org/blogs/suddenserenity/archive/tags/user+interface/default.aspx">user interface</category><category domain="http://devpinoy.org/blogs/suddenserenity/archive/tags/sql/default.aspx">sql</category><category domain="http://devpinoy.org/blogs/suddenserenity/archive/tags/sequel+server/default.aspx">sequel server</category></item></channel></rss>