<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type='text/xsl' href='http://dineshpriyankara.spaces.live.com/mmm2008-05-17_13.22/rsspretty.aspx?rssquery=en-US;http%3a%2f%2fdineshpriyankara.spaces.live.com%2fcategory%2fSQL%2bServer%2b2000%2ffeed.rss' version='1.0'?><rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:msn="http://schemas.microsoft.com/msn/spaces/2005/rss" xmlns:live="http://schemas.microsoft.com/live/spaces/2006/rss" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Dinesh's Blog             ::::::: Being Compiled :::::::: SQL Server 2000</title><description /><link>http://dineshpriyankara.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&amp;_c=BlogPart&amp;partqs=catSQL%2bServer%2b2000</link><language>en-US</language><pubDate>Thu, 26 Jun 2008 19:40:52 GMT</pubDate><lastBuildDate>Thu, 26 Jun 2008 19:40:52 GMT</lastBuildDate><generator>Microsoft Spaces v1.1</generator><docs>http://www.rssboard.org/rss-specification</docs><ttl>60</ttl><cf:parentRSS>http://dineshpriyankara.spaces.live.com/blog/feed.rss</cf:parentRSS><live:type>blogcategory</live:type><live:identity><live:id>4683496953178731031</live:id><live:alias>dineshpriyankara</live:alias></live:identity><cf:listinfo><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="typelabel" label="Type" /><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="tag" label="Tag" /><cf:group element="category" label="Category" /><cf:sort element="pubDate" label="Date" data-type="date" default="true" /><cf:sort element="title" label="Title" data-type="string" /><cf:sort ns="http://purl.org/rss/1.0/modules/slash/" element="comments" label="Comments" data-type="number" /></cf:listinfo><item><title>Did another presentation - Optimizing TSQL</title><link>http://dineshpriyankara.spaces.live.com/Blog/cns!40FF1FAA28D7B217!449.entry</link><description>&lt;div&gt;
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;It was my turn to do a presentation at the .net forum. This time I picked a topic, that is not a new but common to all database developers. I talked about TSQL; how to write effective TSQL. Not all slides could be discussed because of the time but tried my best to deliver as much as possible.&lt;/font&gt;
&lt;p&gt; 
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;Did you find the session important? Did you get something from my session? Like to hear something from you guys, whether the presentation is okay or not.&lt;/font&gt;
&lt;p&gt; 
&lt;p&gt;&lt;span style="font-size:12pt;font-family:'Times New Roman'"&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;The first session was done by &lt;font color="#0000ff"&gt;&lt;a href="http://www.merill.net/"&gt;Merill &lt;/a&gt;&lt;/font&gt;– MVP about ASP.NET 2.0 tips and tricks, he showed really cool stuff.&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4683496953178731031&amp;page=RSS%3a+Did+another+presentation+-+Optimizing+TSQL&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=dineshpriyankara.spaces.live.com&amp;amp;GT1=dineshpriyankara"&gt;</description><comments>http://dineshpriyankara.spaces.live.com/Blog/cns!40FF1FAA28D7B217!449.entry#comment</comments><guid isPermaLink="true">http://dineshpriyankara.spaces.live.com/Blog/cns!40FF1FAA28D7B217!449.entry</guid><pubDate>Thu, 06 Apr 2006 00:45:50 GMT</pubDate><slash:comments>2</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://dineshpriyankara.spaces.live.com/blog/cns!40FF1FAA28D7B217!449/comments/feed.rss</wfw:commentRss><wfw:comment>http://dineshpriyankara.spaces.live.com/Blog/cns!40FF1FAA28D7B217!449.entry#comment</wfw:comment><dcterms:modified>2006-04-06T00:45:50Z</dcterms:modified></item><item><title>Oldest trick but still effective :)</title><link>http://dineshpriyankara.spaces.live.com/Blog/cns!40FF1FAA28D7B217!421.entry</link><description>&lt;div&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;This is little bit an old stuff but I was questioned again regarding this. As usual, thought share it, the question of “How to handle more than one row in trigger?”. As you all know, triggers are fired once per transaction not once per row. Suppose we have implemented a logging system that logs all the update of the table “TestTable”. Fine, this can be easily implemented with a stored procedure and a trigger. We can write a trigger to handle the update and log the information by using the stored procedure that logs update. Just like below….&lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;CREATE PROC &lt;/font&gt;LogTestTableTransaction (@primaryKey &lt;font color="#0000ff"&gt;int&lt;/font&gt;)&lt;br&gt;&lt;font color="#0000ff"&gt;AS&lt;br&gt;BEGIN&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;   &lt;font color="#008000"&gt;-- this is not the way for loggin but for testing&lt;br&gt;&lt;/font&gt;   &lt;font color="#0000ff"&gt;print &lt;/font&gt;&lt;font color="#ff0000"&gt;'The record '&lt;/font&gt; + &lt;font color="#ff00ff"&gt;CONVERT&lt;/font&gt;(&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;(10), @primaryKey) + &lt;font color="#ff0000"&gt;' is changed'&lt;/font&gt;&lt;br&gt;&lt;font color="#0000ff"&gt;END&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;CREATE TRIGGER &lt;/font&gt;TestTableUpdateTrigger &lt;font color="#0000ff"&gt;ON &lt;/font&gt;TestTable&lt;br&gt;&lt;font color="#0000ff"&gt;FOR UPDATE&lt;br&gt;AS&lt;br&gt;BEGIN&lt;br&gt;   IF UPDATE&lt;/font&gt;(ColumnToBeChanged)&lt;br&gt;   &lt;font color="#0000ff"&gt;BEGIN&lt;br&gt;      DECLARE&lt;/font&gt; @primaryKey &lt;font color="#0000ff"&gt;int&lt;/font&gt;&lt;br&gt;      &lt;font color="#0000ff"&gt;SELECT &lt;/font&gt;@primaryKey = PrimaryKey &lt;font color="#0000ff"&gt;FROM &lt;/font&gt;inserted&lt;br&gt;      &lt;font color="#0000ff"&gt;EXEC &lt;/font&gt;LogTestTableTransaction @primaryKey&lt;br&gt;   &lt;font color="#0000ff"&gt;END&lt;br&gt;END&lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;UPDATE &lt;/font&gt;TestTable &lt;font color="#0000ff"&gt;SET &lt;/font&gt;ColumnToBeChanged = &lt;font color="#ff0000"&gt;'NewValue'&lt;/font&gt; &lt;font color="#0000ff"&gt;WHERE &lt;/font&gt;PrimaryKey = 3&lt;br&gt;&lt;font color="#0000ff"&gt;UPDATE&lt;/font&gt; TestTable &lt;font color="#0000ff"&gt;SET &lt;/font&gt;ColumnToBeChanged = &lt;font color="#ff0000"&gt;'NewValue'&lt;/font&gt; &lt;font color="#0000ff"&gt;WHERE &lt;/font&gt;PrimaryKey IN (1, 4)&lt;br&gt;&lt;/font&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;br&gt;The process works fine for first update statement but second statement. Though we update two records in second statement, the trigger fires once because triggers are set-based – once per transaction. The second statement causes to log the last record (4) only. How do we fix this problem? You can find few ways but here is the one of bests.&lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;Implement a cursor inside the trigger. Have a look on new trigger.&lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;CREATE TRIGGER &lt;/font&gt;TestTableUpdateTrigger &lt;font color="#0000ff"&gt;ON &lt;/font&gt;TestTable&lt;br&gt;&lt;font color="#0000ff"&gt;FOR UPDATE&lt;br&gt;AS&lt;br&gt;BEGIN&lt;br&gt;   IF UPDATE&lt;/font&gt;(ColumnToBeChanged)&lt;br&gt;   &lt;font color="#0000ff"&gt;BEGIN&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;      DECLARE&lt;/font&gt; @primaryKey &lt;font color="#0000ff"&gt;int&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;      &lt;font color="#0000ff"&gt;DECLARE &lt;/font&gt;PrimaryKeyCursor &lt;font color="#0000ff"&gt;CURSOR&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" color="#0000ff" size=1&gt;      FOR&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;      SELECT &lt;/font&gt;PrimaryKey &lt;font color="#0000ff"&gt;FROM&lt;/font&gt; inserted&lt;/font&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;/font&gt;&lt;/div&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;
&lt;div&gt;&lt;br&gt;&lt;font face=Verdana&gt;      &lt;/font&gt;&lt;font color="#0000ff"&gt;OPEN&lt;/font&gt; PrimaryKeyCursor  &lt;/div&gt;
&lt;div&gt;&lt;font face=Verdana&gt;      &lt;/font&gt;&lt;font color="#0000ff"&gt;FETCH NEXT FROM&lt;/font&gt; PrimaryKeyCursor &lt;font color="#0000ff"&gt;INTO&lt;/font&gt; @primaryKey&lt;br&gt;&lt;font face=Verdana&gt;      &lt;/font&gt;&lt;font color="#0000ff"&gt;WHILE &lt;/font&gt;(&lt;font color="#ff00ff"&gt;@@FETCH_STATUS &lt;/font&gt;= 0)&lt;br&gt;&lt;font face=Verdana&gt;      &lt;/font&gt;&lt;font color="#0000ff"&gt;BEGIN&lt;br&gt;&lt;font face=Verdana&gt;         &lt;/font&gt;EXEC &lt;/font&gt;LogTestTableTransaction @primaryKey&lt;br&gt;&lt;font face=Verdana&gt;         &lt;/font&gt;&lt;font color="#0000ff"&gt;FETCH NEXT FROM&lt;/font&gt; PrimaryKeyCursor &lt;font color="#0000ff"&gt;INTO &lt;/font&gt;@primaryKey&lt;br&gt;&lt;font face=Verdana&gt;      &lt;/font&gt;&lt;font color="#0000ff"&gt;END&lt;br&gt;&lt;font face=Verdana&gt;      &lt;/font&gt;CLOSE &lt;/font&gt;PrimaryKeyCursor&lt;br&gt;&lt;font face=Verdana&gt;      &lt;/font&gt;&lt;font color="#0000ff"&gt;DEALLOCATE &lt;/font&gt;PrimaryKeyCursor&lt;br&gt;&lt;font face=Verdana&gt;   &lt;/font&gt;&lt;font color="#0000ff"&gt;END&lt;br&gt;END&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;/font&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;Now it should work fine. In most cases, we do not bother on this type of things till we get complain from the client &lt;img src="/rte/emoticons/smile_wink.gif"&gt;. So, keep this procedure in mind. It might help you in your next assignment.&lt;br&gt;&lt;/font&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4683496953178731031&amp;page=RSS%3a+Oldest+trick+but+still+effective+%3a)&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=dineshpriyankara.spaces.live.com&amp;amp;GT1=dineshpriyankara"&gt;</description><comments>http://dineshpriyankara.spaces.live.com/Blog/cns!40FF1FAA28D7B217!421.entry#comment</comments><guid isPermaLink="true">http://dineshpriyankara.spaces.live.com/Blog/cns!40FF1FAA28D7B217!421.entry</guid><pubDate>Tue, 24 Jan 2006 01:16:40 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://dineshpriyankara.spaces.live.com/blog/cns!40FF1FAA28D7B217!421/comments/feed.rss</wfw:commentRss><wfw:comment>http://dineshpriyankara.spaces.live.com/Blog/cns!40FF1FAA28D7B217!421.entry#comment</wfw:comment><dcterms:modified>2006-01-24T01:16:40Z</dcterms:modified></item><item><title>COMPUTE clause with Datagrid</title><link>http://dineshpriyankara.spaces.live.com/Blog/cns!40FF1FAA28D7B217!419.entry</link><description>&lt;div&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;How often you have used COMPUTE and ROLLUP when you want to show totals and subtotals of your data? I am sure; your answer will be “very rare” or “never”. There are some instances in that these are come in handy.  I decided to make some series of tests that how we can use them with .net. This is my first test.&lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;Suppose we want to populate all the orders (date, quantity and amount) with data grid. Simple way is, fill the required data with simple SELECT query to dataset and bind it to the data grid. Suppose that the grand totals of the quantity and the amount have to be shown. There are few ways to do this. You might do this by making another request to the database or looping the dataset or through ItemDataBound event. Do you ever think that this can be easily done with COMPUTE clause? Here is the way.&lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;The below code shows how the query is written and data is bound. Make sure that the dataset can be accessed throughout the class. &lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;SqlConnection sqlConnection = &lt;font color="#0000ff"&gt;new &lt;/font&gt;SqlConnection(&amp;quot;Server=(local);Database=Northwind;Uid=sa;Pwd=Dinesh&amp;quot;);&lt;br&gt;&lt;font color="#0000ff"&gt;string &lt;/font&gt;sql = @&amp;quot; SELECT o.OrderDate, Quantity, UnitPrice*Quantity AS Amount&lt;br&gt;                     FROM Orders o&lt;br&gt;                     INNER JOIN [Order Details] od&lt;br&gt;                        ON o.OrderId = od.OrderId&lt;br&gt;                     COMPUTE SUM(Quantity), SUM(UnitPrice*Quantity )&lt;br&gt;&amp;quot;;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;SqlCommand sqlCommand = &lt;font color="#0000ff"&gt;new &lt;/font&gt;SqlCommand(sql, sqlConnection);&lt;br&gt;SqlDataAdapter sqlDataAdapter = &lt;font color="#0000ff"&gt;new &lt;/font&gt;SqlDataAdapter(sqlCommand);&lt;br&gt;&lt;font color="#0000ff"&gt;try&lt;/font&gt;&lt;br&gt;{&lt;br&gt;   sqlConnection.Open();&lt;br&gt;   sqlDataAdapter.Fill(dataSet);&lt;br&gt;   DataGrid1.DataSource = dataSet.Tables[0];&lt;br&gt;   DataGrid1.DataBind();&lt;br&gt;}&lt;br&gt;&lt;font color="#0000ff"&gt;catch &lt;/font&gt;(Exception ex)&lt;br&gt;{&lt;br&gt;   Response.Write(ex.Message);&lt;br&gt;}&lt;br&gt;&lt;font color="#0000ff"&gt;finally&lt;/font&gt;&lt;br&gt;{&lt;br&gt;   sqlConnection.Close();&lt;br&gt;}&lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;This code shows the way of setting the grand totals of the quantity and amount in the footer of the grid. Note that this has to be written inside the ItemDataBound event.&lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;if &lt;/font&gt;(e.Item.ItemType == ListItemType.Footer)&lt;br&gt;{&lt;br&gt;   Label labelTotalQuantity = (Label) e.Item.FindControl(&amp;quot;LabelTotalQuantity&amp;quot;);&lt;br&gt;   labelTotalQuantity.Text = dataSet.Tables[1].Rows[0][0].ToString();&lt;br&gt;   &lt;/font&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;Label labelTotalAmount = (Label) e.Item.FindControl(&amp;quot;LabelTotalAmount&amp;quot;);&lt;br&gt;   labelTotalAmount.Text = &lt;font color="#0000ff"&gt;string&lt;/font&gt;.Format(&amp;quot;{0:c}&amp;quot;, dataSet.Tables[1].Rows[0][1]);&lt;br&gt;}&lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;Do you think that this is easier than the usual way we used to? The COMPUTE BY is being tested with the grid. Let me published it once I finished with it.&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4683496953178731031&amp;page=RSS%3a+COMPUTE+clause+with+Datagrid&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=dineshpriyankara.spaces.live.com&amp;amp;GT1=dineshpriyankara"&gt;</description><comments>http://dineshpriyankara.spaces.live.com/Blog/cns!40FF1FAA28D7B217!419.entry#comment</comments><guid isPermaLink="true">http://dineshpriyankara.spaces.live.com/Blog/cns!40FF1FAA28D7B217!419.entry</guid><pubDate>Sat, 14 Jan 2006 11:58:45 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://dineshpriyankara.spaces.live.com/blog/cns!40FF1FAA28D7B217!419/comments/feed.rss</wfw:commentRss><wfw:comment>http://dineshpriyankara.spaces.live.com/Blog/cns!40FF1FAA28D7B217!419.entry#comment</wfw:comment><dcterms:modified>2006-01-14T11:58:45Z</dcterms:modified></item><item><title>Default size of char and varchar</title><link>http://dineshpriyankara.spaces.live.com/Blog/cns!40FF1FAA28D7B217!347.entry</link><description>&lt;div&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;When a question &lt;strong&gt;&lt;em&gt;“What is the default size of char or varchar if the size is not specified?” &lt;/em&gt;&lt;/strong&gt;was raised in the middle of SQL session, as I expected, almost all answers were 1. Of course they are not experienced developers with SQL Server (some are new-bies). Do you know the answer? In a way, it is correct. But it changes its behavior little bit with convert operation. Have a look on the code below.&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=Verdana size=1&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;DECLARE &lt;/font&gt;@char &lt;font color="#0000ff"&gt;char&lt;/font&gt;, @varchar &lt;font color="#0000ff"&gt;varchar&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;
&lt;div&gt;&lt;br&gt;&lt;font color="#0000ff"&gt;SET &lt;/font&gt;@char &lt;font color="#ff0000"&gt;= 'abcd'&lt;/font&gt;&lt;font color="#ff00ff"&gt;&lt;br&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;SET &lt;/font&gt;@varchar =&lt;font color="#ff0000"&gt; 'abcd'&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=Verdana&gt;&lt;/font&gt;&lt;/div&gt;&lt;/font&gt; 
&lt;div&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;SELECT &lt;/font&gt;@char , @varchar&lt;br&gt;&lt;font color="#008000"&gt;-- result&lt;br&gt;-- a a&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=Verdana size=1&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;SELECT &lt;/font&gt;&lt;font color="#ff00ff"&gt;LEN&lt;/font&gt;(&lt;font color="#ff00ff"&gt;CONVERT&lt;/font&gt;(&lt;font color="#0000ff"&gt;char&lt;/font&gt;, &lt;font color="#ff00ff"&gt;REPLICATE&lt;/font&gt;(&lt;font color="#ff0000"&gt;'a'&lt;/font&gt;, 100))), &lt;font color="#ff00ff"&gt;LEN&lt;/font&gt;(&lt;font color="#ff00ff"&gt;CONVERT&lt;/font&gt;(&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;, &lt;font color="#ff00ff"&gt;REPLICATE&lt;/font&gt;(&lt;font color="#ff0000"&gt;'a'&lt;/font&gt;, 100)))&lt;br&gt;&lt;font color="#008000"&gt;-- result&lt;br&gt;-- 30  30&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=Verdana size=1&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;The last statements return 30 for both char and varchar types. This because of, SQL Server set the size (if not specified) of char and varchar as 30 when they are used in CONVERT operation. Now, was your answer correct? Let me know your answer.&lt;img src="/rte/emoticons/smile_wink.gif"&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=Verdana size=1&gt;&lt;/font&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4683496953178731031&amp;page=RSS%3a+Default+size+of+char+and+varchar&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=dineshpriyankara.spaces.live.com&amp;amp;GT1=dineshpriyankara"&gt;</description><comments>http://dineshpriyankara.spaces.live.com/Blog/cns!40FF1FAA28D7B217!347.entry#comment</comments><guid isPermaLink="true">http://dineshpriyankara.spaces.live.com/Blog/cns!40FF1FAA28D7B217!347.entry</guid><pubDate>Mon, 24 Oct 2005 18:07:04 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://dineshpriyankara.spaces.live.com/blog/cns!40FF1FAA28D7B217!347/comments/feed.rss</wfw:commentRss><wfw:comment>http://dineshpriyankara.spaces.live.com/Blog/cns!40FF1FAA28D7B217!347.entry#comment</wfw:comment><dcterms:modified>2005-10-24T18:07:04Z</dcterms:modified></item><item><title>Placing conditions: in the WHERE or ON clause?</title><link>http://dineshpriyankara.spaces.live.com/Blog/cns!40FF1FAA28D7B217!340.entry</link><description>&lt;div&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;Yesterday, one of my friends called me and put a question regarding JOINs. He had joined two tables with OUTER JOIN to get his desired result but the output is not as what he expected. When I saw the query, I immediately found the problem; one of the key conditions is placed in the WHERE clause instead ON clause. Does it really affect for the output. If it is OUTER JOIN, yes, it might affect to the output. Have look on below queries.&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=Verdana size=1&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#008000"&gt;--create Students table and insert some data&lt;/font&gt;&lt;br&gt;&lt;font color="#0000ff"&gt;CREATE TABLE&lt;/font&gt; #Students&lt;br&gt;(Id &lt;font color="#0000ff"&gt;int PRIMARY KEY&lt;/font&gt;,&lt;br&gt;FirstName &lt;font color="#0000ff"&gt;varchar&lt;/font&gt;(50) &lt;font color="#808080"&gt;NOT NULL&lt;/font&gt;)&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;INSERT INTO&lt;/font&gt; #Students &lt;font color="#0000ff"&gt;VALUES &lt;/font&gt;(1, &lt;font color="#ff0000"&gt;'Dinesh'&lt;/font&gt;)&lt;br&gt;&lt;font color="#0000ff"&gt;INSERT INTO&lt;/font&gt; #Students &lt;font color="#0000ff"&gt;VALUES &lt;/font&gt;(2, &lt;font color="#ff0000"&gt;'Asela'&lt;/font&gt;)&lt;br&gt;&lt;font color="#0000ff"&gt;INSERT INTO&lt;/font&gt; #Students &lt;font color="#0000ff"&gt;VALUES &lt;/font&gt;(3, &lt;font color="#ff0000"&gt;'Sanjaya'&lt;/font&gt;)&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" color="#008000" size=1&gt;--create StudentCources table and insert some data&lt;br&gt;&lt;/font&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;CREATE TABLE&lt;/font&gt; #StudentCources&lt;br&gt;(StudentId &lt;font color="#0000ff"&gt;int &lt;/font&gt;&lt;font color="#808080"&gt;NOT NULL&lt;/font&gt;,&lt;br&gt;CourseName &lt;font color="#0000ff"&gt;varchar&lt;/font&gt;(50) &lt;font color="#808080"&gt;NOT NULL&lt;/font&gt;)&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;INSERT INTO&lt;/font&gt; #StudentCources &lt;font color="#0000ff"&gt;VALUES &lt;/font&gt;(1, &lt;font color="#ff0000"&gt;'A'&lt;/font&gt;)&lt;br&gt;&lt;font color="#0000ff"&gt;INSERT INTO&lt;/font&gt; #StudentCources &lt;font color="#0000ff"&gt;VALUES &lt;/font&gt;(1, &lt;font color="#ff0000"&gt;'B'&lt;/font&gt;)&lt;br&gt;&lt;font color="#0000ff"&gt;INSERT INTO&lt;/font&gt; #StudentCources &lt;font color="#0000ff"&gt;VALUES &lt;/font&gt;(1, &lt;font color="#ff0000"&gt;'C'&lt;/font&gt;)&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;Assume we need to list out all the students and see whether they are enrolled for course ‘A’. There are few ways to the list out but we will use OUTER JOIN to see the different.&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=Verdana size=1&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#008000"&gt;--query1&lt;/font&gt;&lt;br&gt;&lt;font color="#0000ff"&gt;SELECT &lt;/font&gt;s.FirstName, &lt;font color="#ff00ff"&gt;ISNULL&lt;/font&gt;(sc.CourseName, &lt;font color="#ff0000"&gt;'-'&lt;/font&gt;) &lt;font color="#0000ff"&gt;AS&lt;/font&gt; CourseName&lt;br&gt;&lt;font color="#0000ff"&gt;FROM &lt;/font&gt;#Students s&lt;br&gt; &lt;font color="#808080"&gt;LEFT OUTER JOIN&lt;/font&gt; #StudentCources sc&lt;br&gt;  &lt;font color="#0000ff"&gt;ON &lt;/font&gt;s.Id = sc.StudentId &lt;font color="#808080"&gt;and &lt;/font&gt;sc.CourseName = &lt;font color="#ff0000"&gt;'A'&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=Verdana size=1&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#008000"&gt;--output&lt;/font&gt;&lt;br&gt;FirstName CourseName&lt;br&gt;--------- ----------&lt;br&gt;Dinesh    A&lt;br&gt;Asela     -&lt;br&gt;Sanjaya   -&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;Fine. We get what we wanted. See the place of the condition of sc.CourseName = 'A'. It is placed in the ON clause. What will happen if it is placed in the WHERE clause.&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=Verdana size=1&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#008000"&gt;--query2&lt;/font&gt;&lt;br&gt;&lt;font color="#0000ff"&gt;SELECT &lt;/font&gt;s.FirstName, &lt;font color="#ff00ff"&gt;ISNULL&lt;/font&gt;(sc.CourseName, &lt;font color="#ff0000"&gt;'-'&lt;/font&gt;) &lt;font color="#0000ff"&gt;AS &lt;/font&gt;CourseName&lt;br&gt;&lt;font color="#0000ff"&gt;FROM &lt;/font&gt;#Students s&lt;br&gt; &lt;font color="#808080"&gt;LEFT OUTER JOIN&lt;/font&gt; #StudentCources sc&lt;br&gt;  &lt;font color="#0000ff"&gt;ON &lt;/font&gt;s.Id = sc.StudentId &lt;br&gt;&lt;font color="#0000ff"&gt;WHERE &lt;/font&gt;sc.CourseName = &lt;font color="#ff0000"&gt;'A'&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#008000"&gt;--output&lt;/font&gt;&lt;br&gt;FirstName CourseName&lt;br&gt;--------- ---------&lt;br&gt;Dinesh    A&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;Now the output is completely different. Do you know the reason?&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=Verdana size=1&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;When the condition is placed in the ON clause, it is applied before joining tables. That’s why we get all the students for query 1. But if the condition is placed in the WHERE clause, it is applied for the final result set. Keep this in mind because this is a common mistake we do.&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=Verdana size=1&gt;&lt;/font&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4683496953178731031&amp;page=RSS%3a+Placing+conditions%3a+in+the+WHERE+or+ON+clause%3f&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=dineshpriyankara.spaces.live.com&amp;amp;GT1=dineshpriyankara"&gt;</description><comments>http://dineshpriyankara.spaces.live.com/Blog/cns!40FF1FAA28D7B217!340.entry#comment</comments><guid isPermaLink="true">http://dineshpriyankara.spaces.live.com/Blog/cns!40FF1FAA28D7B217!340.entry</guid><pubDate>Sun, 16 Oct 2005 03:54:24 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://dineshpriyankara.spaces.live.com/blog/cns!40FF1FAA28D7B217!340/comments/feed.rss</wfw:commentRss><wfw:comment>http://dineshpriyankara.spaces.live.com/Blog/cns!40FF1FAA28D7B217!340.entry#comment</wfw:comment><dcterms:modified>2005-10-16T03:54:24Z</dcterms:modified></item><item><title>SET or SELECT</title><link>http://dineshpriyankara.spaces.live.com/Blog/cns!40FF1FAA28D7B217!307.entry</link><description>&lt;div&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;I was questioned by one of my colleagues regarding SET statement but, my answer for him was incomplete &lt;img src="/rte/emoticons/smile_sad.gif"&gt;and made me to brush up on this. If I sum up the background of the question tersely, here it is: Should &amp;quot;SET&amp;quot; be always used when need to assign a value into local variable instead of &amp;quot;SELECT&amp;quot;? (This is not the exact question he made.) I went through couple of points to distinguish between &amp;quot;SET&amp;quot; and &amp;quot;SELECT&amp;quot; as below, might help you too.&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=Verdana size=1&gt;&lt;/font&gt; &lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;The recommended way to assign local variable is &amp;quot;SET&amp;quot; rather than &amp;quot;SELECT&amp;quot; because &amp;quot;SET&amp;quot; is the ANSI standard way of assigning values into variables.&lt;/font&gt;
&lt;li&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;SET cannot be used with statements that return multi values.&lt;br&gt;&lt;font color="#008000"&gt;//this will end up with an error if table has more than one row&lt;br&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;SET &lt;/font&gt;@Id = (&lt;font color="#0000ff"&gt;SELECT Id FROM&lt;/font&gt; Table1)&lt;br&gt;&lt;font color="#008000"&gt;//this will execute without any errors but the result might not be desired one.&lt;br&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;SELECT &lt;/font&gt;@Id = &lt;font color="#0000ff"&gt;Id FROM &lt;/font&gt;table1&lt;/font&gt;
&lt;li&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;SELECT will save the previous assigned value if new assign statement will not set new value.&lt;br&gt;&lt;font color="#008000"&gt;//set a value to local variable&lt;br&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;SET &lt;/font&gt;@Id = 0&lt;br&gt;&lt;font color="#008000"&gt;//new assignment statement with SELECT but will not return any rows&lt;br&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;SELECT&lt;/font&gt; @Id = &lt;font color="#0000ff"&gt;Id FROM &lt;/font&gt;Table1 &lt;font color="#0000ff"&gt;WHERE Name &lt;/font&gt;= &lt;font color="#ff0000"&gt;'Dinesh'&lt;br&gt;&lt;/font&gt;&lt;font color="#008000"&gt;//Will return 0 because the previous value is saved.&lt;br&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;SELECT&lt;/font&gt; @Id&lt;br&gt;&lt;font color="#008000"&gt;//new assignment with SET. This statement will return no rows.&lt;br&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;SET &lt;/font&gt;@Id = (&lt;font color="#0000ff"&gt;SELECT&lt;/font&gt; @Id &lt;font color="#0000ff"&gt;FROM&lt;/font&gt; Table1 &lt;font color="#0000ff"&gt;WHERE Name &lt;/font&gt;= &lt;font color="#ff0000"&gt;'Dinesh'&lt;/font&gt;)&lt;br&gt;&lt;font color="#008000"&gt;//Will return NULL&lt;br&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;SELECT &lt;/font&gt;@Id&lt;/font&gt;
&lt;li&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;SELECT allows assigning more than one local variables with one statement.&lt;br&gt;&lt;font color="#0000ff"&gt;SELECT &lt;/font&gt;@Id = &lt;font color="#0000ff"&gt;Id&lt;/font&gt;, @Name = &lt;font color="#0000ff"&gt;Name FROM &lt;/font&gt;Table1&lt;/font&gt;&lt;/ul&gt;
&lt;div&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;In addition to that, I do not think that there is a performance different between these two but it might boost the performance for last point with &amp;quot;SELECT&amp;quot;.&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=Verdana size=1&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;I highly appreciate if you have more points other than the mentioned ones on this and share with me.&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=Verdana size=1&gt;&lt;/font&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4683496953178731031&amp;page=RSS%3a+SET+or+SELECT&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=dineshpriyankara.spaces.live.com&amp;amp;GT1=dineshpriyankara"&gt;</description><comments>http://dineshpriyankara.spaces.live.com/Blog/cns!40FF1FAA28D7B217!307.entry#comment</comments><guid isPermaLink="true">http://dineshpriyankara.spaces.live.com/Blog/cns!40FF1FAA28D7B217!307.entry</guid><pubDate>Fri, 30 Sep 2005 06:39:40 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://dineshpriyankara.spaces.live.com/blog/cns!40FF1FAA28D7B217!307/comments/feed.rss</wfw:commentRss><wfw:comment>http://dineshpriyankara.spaces.live.com/Blog/cns!40FF1FAA28D7B217!307.entry#comment</wfw:comment><dcterms:modified>2005-09-30T06:39:40Z</dcterms:modified></item><item><title>Delete a record with all of its dependancies</title><link>http://dineshpriyankara.spaces.live.com/Blog/cns!40FF1FAA28D7B217!261.entry</link><description>&lt;div&gt;
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;Have you ever wanted to delete some records manually in your database while testing? If yes, how long did you take if the record had much more dependencies? I know, if the record has dependencies, and all the dependencies have dependencies, and so on… it makes you mad unless “Cascade delete” is on.&lt;/font&gt;
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt; &lt;/font&gt;
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;To avoid the time it takes, I just wrote a small code that supports the deletion of all dependencies. Here is the code I did. More thing to be enhanced and much to be tested but it works fine. Have a copy if you need but remember that it still supports table that has single integer type primary key. Improvement for handling string type and composite primary keys are being done.&lt;/font&gt;
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;/font&gt; 
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;/font&gt; 
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;IF &lt;/font&gt;&lt;font color="#ff00ff"&gt;OBJECT&lt;/font&gt;&lt;font color="#ff00ff"&gt;_ID&lt;/font&gt;(&lt;font color="#ff0000"&gt;'DeleteRecord'&lt;/font&gt;) &lt;font color="#0000ff"&gt;IS &lt;/font&gt;NOT NULL&lt;br&gt;&lt;font color="#0000ff"&gt;   DROP PROC&lt;/font&gt; DeleteRecord&lt;br&gt;GO&lt;br&gt;&lt;font color="#0000ff"&gt;CREATE PROCEDURE&lt;/font&gt; DeleteRecord @ownerName &lt;font color="#0000ff"&gt;varchar&lt;/font&gt;(100), @tableName &lt;font color="#0000ff"&gt;varchar&lt;/font&gt;(200), @columnName &lt;font color="#0000ff"&gt;varchar&lt;/font&gt;(200), @PrimaryKeyValue &lt;font color="#0000ff"&gt;varchar&lt;/font&gt;(1000), @IsPrimaryKeyValueTypesString &lt;font color="#0000ff"&gt;bit&lt;/font&gt;&lt;br&gt;&lt;font color="#0000ff"&gt;AS&lt;br&gt;BEGIN&lt;/font&gt;&lt;/font&gt;
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" color="#0000ff" size=1&gt;   SET NOCOUNT ON&lt;br&gt;   SET ANSI_WARNINGS OFF&lt;/font&gt;
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" color="#008000" size=1&gt;&lt;font color="#0000ff"&gt;   &lt;/font&gt;--*************************************************--&lt;br&gt;&lt;font color="#0000ff"&gt;   &lt;/font&gt;-- Region: Find Primary key values&lt;br&gt;&lt;font color="#0000ff"&gt;   &lt;/font&gt;--*************************************************--&lt;/font&gt;
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;   DECLARE &lt;/font&gt;@tempPKeys_ColumnName &lt;font color="#0000ff"&gt;sysname&lt;/font&gt;, @primaryKeyValueInsertStatement &lt;font color="#0000ff"&gt;varchar&lt;/font&gt;(5000), @primaryKeyValues &lt;font color="#0000ff"&gt;varchar&lt;/font&gt;(1000), @Value &lt;font color="#0000ff"&gt;varchar&lt;/font&gt;(10)&lt;/font&gt;
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;   IF &lt;/font&gt;EXISTS (&lt;font color="#0000ff"&gt;SELECT name FROM&lt;/font&gt; tempdb..sysobjects &lt;font color="#0000ff"&gt;WHERE name&lt;/font&gt; LIKE &lt;font color="#ff0000"&gt;'#tempPKeys%'&lt;/font&gt;)&lt;br&gt;&lt;font color="#0000ff"&gt;      DROP TABLE&lt;/font&gt; #tempPKeys&lt;/font&gt;
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;   CREATE TABLE&lt;/font&gt; #tempPKeys&lt;br&gt;&lt;font color="#0000ff"&gt;   &lt;/font&gt;(tempPKeys_TableQualifier &lt;font color="#0000ff"&gt;sysname&lt;/font&gt;,&lt;br&gt;&lt;font color="#0000ff"&gt;   &lt;/font&gt;tempPKeys_TableOwner &lt;font color="#0000ff"&gt;sysname&lt;/font&gt;,&lt;br&gt;&lt;font color="#0000ff"&gt;   &lt;/font&gt;tempPKeys_TableName &lt;font color="#0000ff"&gt;sysname&lt;/font&gt;,&lt;br&gt;&lt;font color="#0000ff"&gt;   &lt;/font&gt;tempPKeys_ColumnName &lt;font color="#0000ff"&gt;sysname&lt;/font&gt;,&lt;br&gt;&lt;font color="#0000ff"&gt;   &lt;/font&gt;tempPKeys_KeySequence &lt;font color="#0000ff"&gt;smallint&lt;/font&gt;,&lt;br&gt;&lt;font color="#0000ff"&gt;   &lt;/font&gt;tempPKeys_PKName &lt;font color="#0000ff"&gt;sysname&lt;/font&gt;)&lt;/font&gt;
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;   INSERT INTO &lt;/font&gt;#tempPKeys &lt;br&gt;&lt;font color="#0000ff"&gt;   EXEC &lt;/font&gt;&lt;font color="#993300"&gt;sp_pkeys&lt;/font&gt; @tableName&lt;/font&gt;
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;   SET&lt;/font&gt; @tempPKeys_ColumnName = &lt;font color="#ff0000"&gt;''&lt;/font&gt;&lt;br&gt;&lt;font color="#0000ff"&gt;   SELECT TOP&lt;/font&gt; 1 @tempPKeys_ColumnName = tempPKeys_ColumnName &lt;font color="#0000ff"&gt;FROM &lt;/font&gt;#tempPKeys&lt;/font&gt;
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;   SET&lt;/font&gt; @primaryKeyValues =&lt;font color="#ff0000"&gt; ''&lt;/font&gt;&lt;/font&gt;
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;   DROP TABLE&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#000000"&gt;#tempPKeys&lt;/font&gt;&lt;/font&gt;
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;   IF &lt;/font&gt;(@columnName = &lt;font color="#ff0000"&gt;''&lt;/font&gt;) &lt;font color="#008000"&gt;-- firsttime sp execution. &lt;/font&gt;&lt;br&gt;&lt;font color="#0000ff"&gt;   BEGIN&lt;/font&gt;&lt;br&gt;&lt;font color="#0000ff"&gt;      SET &lt;/font&gt;@primaryKeyValues = @PrimaryKeyValue&lt;br&gt;&lt;font color="#0000ff"&gt;   END&lt;br&gt;   ELSE&lt;br&gt;   BEGIN&lt;br&gt;      IF &lt;/font&gt;(@tempPKeys_ColumnName != ''&lt;font color="#008000"&gt;) -- no primary key defined for the tabele&lt;/font&gt;&lt;br&gt;&lt;font color="#0000ff"&gt;      BEGIN&lt;br&gt;         IF&lt;/font&gt; EXISTS (&lt;font color="#0000ff"&gt;SELECT name FROM &lt;/font&gt;tempdb..sysobjects &lt;font color="#0000ff"&gt;WHERE name &lt;/font&gt;LIKE &lt;font color="#ff0000"&gt;'#tempPKeyValues%'&lt;/font&gt;)&lt;br&gt;&lt;font color="#0000ff"&gt;         DROP TABLE&lt;/font&gt; #tempPKeyValues&lt;/font&gt;
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;         CREATE TABLE&lt;/font&gt; #tempPKeyValues&lt;br&gt;&lt;font color="#0000ff"&gt;         &lt;/font&gt;(tempPKeyValues_Value &lt;font color="#0000ff"&gt;varchar&lt;/font&gt;(1000))&lt;/font&gt;
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;         SET &lt;/font&gt;@primaryKeyValueInsertStatement = &lt;font color="#ff0000"&gt;''&lt;br&gt;&lt;font color="#0000ff"&gt;         &lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;SET &lt;/font&gt;@primaryKeyValueInsertStatement = &lt;font color="#ff0000"&gt;'INSERT INTO #tempPKeyValues SELECT ' &lt;/font&gt;+ @tempPKeys_ColumnName &lt;br&gt;&lt;font color="#0000ff"&gt;         SET &lt;/font&gt;@primaryKeyValueInsertStatement = @primaryKeyValueInsertStatement + &lt;font color="#ff0000"&gt;' FROM '&lt;/font&gt; + @tableName + &lt;font color="#ff0000"&gt;' '&lt;/font&gt;&lt;br&gt;&lt;font color="#0000ff"&gt;         SET &lt;/font&gt;@primaryKeyValueInsertStatement = @primaryKeyValueInsertStatement + &lt;font color="#ff0000"&gt;'WHERE ' &lt;/font&gt;+ @columnName + &lt;font color="#ff0000"&gt;' IN ('&lt;br&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;         SET&lt;/font&gt; @primaryKeyValueInsertStatement = @primaryKeyValueInsertStatement + @PrimaryKeyValue + &lt;font color="#ff0000"&gt;')'&lt;br&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;         EXEC &lt;/font&gt;(@primaryKeyValueInsertStatement)&lt;/font&gt;
&lt;p&gt;&lt;br&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;         DECLARE &lt;/font&gt;curPrimaryKeyValues &lt;font color="#0000ff"&gt;CURSOR FORWARD_ONLY&lt;br&gt;         FOR&lt;br&gt;         SELECT&lt;/font&gt; * &lt;font color="#0000ff"&gt;FROM&lt;/font&gt; #tempPKeyValues&lt;/font&gt;
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;         SET &lt;/font&gt;@primaryKeyValues = &lt;font color="#ff0000"&gt;''&lt;/font&gt;&lt;/font&gt;
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;         OPEN &lt;/font&gt;curPrimaryKeyValues&lt;br&gt;&lt;font color="#0000ff"&gt;         FETCH NEXT FROM&lt;/font&gt; curPrimaryKeyValues &lt;font color="#0000ff"&gt;INTO &lt;/font&gt;@Value&lt;br&gt;&lt;font color="#0000ff"&gt;         WHILE &lt;/font&gt;&lt;font color="#ff00ff"&gt;(@@FETCH_STATUS&lt;/font&gt; = 0)&lt;br&gt;&lt;font color="#0000ff"&gt;         BEGIN&lt;/font&gt;&lt;/font&gt;
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;            SET &lt;/font&gt;@primaryKeyValues = @primaryKeyValues + &lt;font color="#ff0000"&gt;','&lt;/font&gt; + @Value&lt;br&gt;&lt;font color="#0000ff"&gt;            FETCH NEXT FROM&lt;/font&gt; curPrimaryKeyValues &lt;font color="#0000ff"&gt;INTO &lt;/font&gt;@Value&lt;br&gt;&lt;font color="#0000ff"&gt;         END&lt;br&gt;      CLOSE&lt;/font&gt; curPrimaryKeyValues&lt;br&gt;&lt;font color="#0000ff"&gt;      DEALLOCATE &lt;/font&gt;curPrimaryKeyValues&lt;/font&gt;
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;      DROP TABLE&lt;/font&gt; #tempPKeyValues&lt;/font&gt;
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;      IF &lt;/font&gt;(@primaryKeyValues != &lt;font color="#ff0000"&gt;''&lt;/font&gt;)&lt;br&gt;&lt;font color="#0000ff"&gt;         SET &lt;/font&gt;@primaryKeyValues = &lt;font color="#ff00ff"&gt;SUBSTRING&lt;/font&gt;(@primaryKeyValues, 2, &lt;font color="#ff00ff"&gt;LEN&lt;/font&gt;(@primaryKeyValues)-1)&lt;/font&gt;
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;br&gt;&lt;font color="#0000ff"&gt;      END&lt;br&gt;   END&lt;br&gt;   &lt;/font&gt;&lt;font color="#008000"&gt;--*************************************************--&lt;br&gt;&lt;font color="#0000ff"&gt;   &lt;/font&gt;-- EndRegion: Find Primary key values&lt;br&gt;&lt;font color="#0000ff"&gt;   &lt;/font&gt;--*************************************************--&lt;/font&gt;&lt;/font&gt;
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;/font&gt;&lt;font color="#008000"&gt; &lt;/font&gt;&lt;br&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" color="#008000" size=1&gt;&lt;font color="#0000ff"&gt;   &lt;/font&gt;--*************************************************--&lt;br&gt;&lt;font color="#0000ff"&gt;   &lt;/font&gt;-- Region: Check dependancies&lt;br&gt;&lt;font color="#0000ff"&gt;   &lt;/font&gt;--*************************************************--&lt;/font&gt;
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;   IF &lt;/font&gt;(@primaryKeyValues !=&lt;font color="#ff0000"&gt; ''&lt;/font&gt;)&lt;br&gt;&lt;font color="#0000ff"&gt;   BEGIN&lt;/font&gt;&lt;/font&gt;
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;      IF&lt;/font&gt; EXISTS (&lt;font color="#0000ff"&gt;SELECT name FROM&lt;/font&gt; tempdb..sysobjects &lt;font color="#0000ff"&gt;WHERE name &lt;/font&gt;LIKE &lt;font color="#ff0000"&gt;'#tempFKeys%'&lt;/font&gt;)&lt;br&gt;&lt;font color="#0000ff"&gt;      DROP TABLE&lt;/font&gt; #tempFKeys&lt;/font&gt;
&lt;p&gt;&lt;font face=Verdana size=1&gt;&lt;/font&gt; 
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;      CREATE TABLE&lt;/font&gt; #tempFKeys&lt;br&gt;&lt;font color="#0000ff"&gt;      &lt;/font&gt;(PKTableQualifier &lt;font color="#0000ff"&gt;sysname&lt;/font&gt;,&lt;br&gt;&lt;font color="#0000ff"&gt;      &lt;/font&gt;PKTable_Owner &lt;font color="#0000ff"&gt;sysname&lt;/font&gt;,&lt;br&gt;&lt;font color="#0000ff"&gt;      &lt;/font&gt;PKTableName &lt;font color="#0000ff"&gt;sysname&lt;/font&gt;,&lt;br&gt;&lt;font color="#0000ff"&gt;      &lt;/font&gt;PKColumnName &lt;font color="#0000ff"&gt;sysname&lt;/font&gt;,&lt;br&gt;&lt;font color="#0000ff"&gt;      &lt;/font&gt;FKTableQualifier &lt;font color="#0000ff"&gt;sysname&lt;/font&gt;,&lt;br&gt;&lt;font color="#0000ff"&gt;      &lt;/font&gt;FKTableOwner &lt;font color="#0000ff"&gt;sysname&lt;/font&gt;,&lt;br&gt;&lt;font color="#0000ff"&gt;      &lt;/font&gt;FKTableName &lt;font color="#0000ff"&gt;sysname&lt;/font&gt;,&lt;br&gt;&lt;font color="#0000ff"&gt;      &lt;/font&gt;FKColumnName &lt;font color="#0000ff"&gt;varchar&lt;/font&gt;(100),&lt;br&gt;&lt;font color="#0000ff"&gt;      &lt;/font&gt;KeySequence &lt;font color="#0000ff"&gt;smallint&lt;/font&gt;,&lt;br&gt;&lt;font color="#0000ff"&gt;      &lt;/font&gt;UpdateRule &lt;font color="#0000ff"&gt;smallint&lt;/font&gt;,&lt;br&gt;&lt;font color="#0000ff"&gt;      &lt;/font&gt;DeleteRule &lt;font color="#0000ff"&gt;smallint&lt;/font&gt;,&lt;br&gt;&lt;font color="#0000ff"&gt;      &lt;/font&gt;FKName &lt;font color="#0000ff"&gt;sysname&lt;/font&gt;,&lt;br&gt;&lt;font color="#0000ff"&gt;      &lt;/font&gt;PKName &lt;font color="#0000ff"&gt;sysname&lt;/font&gt;,&lt;br&gt;&lt;font color="#0000ff"&gt;      &lt;/font&gt;Deferrability &lt;font color="#0000ff"&gt;sql_&lt;/font&gt;&lt;font color="#0000ff"&gt;variant&lt;/font&gt;)&lt;/font&gt;
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;      DECLARE &lt;/font&gt;@primaryKeyTableQualifier &lt;font color="#0000ff"&gt;sysname&lt;/font&gt;, @primaryKeyTableOwner &lt;font color="#0000ff"&gt;sysname&lt;/font&gt;, &lt;font color="#0000ff"&gt;      &lt;/font&gt;@primaryKeyTableName &lt;font color="#0000ff"&gt;sysname&lt;/font&gt;, @primaryKeyColumnName &lt;font color="#0000ff"&gt;sysname&lt;/font&gt;, @foreignKeyTableQualifier &lt;font color="#0000ff"&gt;sysname&lt;/font&gt;, @foreignKeyTableOwner &lt;font color="#0000ff"&gt;sysname&lt;/font&gt;, &lt;br&gt;@foreignKeyTableName &lt;font color="#0000ff"&gt;sysname&lt;/font&gt;, @foreignKeyColumnName &lt;font color="#0000ff"&gt;varchar&lt;/font&gt;(200), @keySequence &lt;font color="#0000ff"&gt;smallint&lt;/font&gt;, @updateRule &lt;font color="#0000ff"&gt;smallint&lt;/font&gt;, @deleteRule &lt;font color="#0000ff"&gt;smallint&lt;/font&gt;, @foreignKeyName &lt;font color="#0000ff"&gt;sysname&lt;/font&gt;,&lt;br&gt;@primaryKeyName &lt;font color="#0000ff"&gt;sysname&lt;/font&gt;, @deferrability &lt;font color="#0000ff"&gt;sql_variant&lt;/font&gt;&lt;/font&gt;
&lt;p&gt;&lt;font face=Verdana color="#0000ff" size=1&gt;&lt;/font&gt; 
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;      INSERT INTO&lt;/font&gt; #tempFKeys&lt;br&gt;&lt;font color="#0000ff"&gt;      EXEC &lt;/font&gt;&lt;font color="#993300"&gt;sp_fkeys&lt;/font&gt; @tableName, @ownerName&lt;/font&gt;
&lt;p&gt;&lt;br&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;      DECLARE &lt;/font&gt;curForeignKeys &lt;font color="#0000ff"&gt;CURSOR LOCAL STATIC&lt;br&gt;      FOR&lt;br&gt;      SELECT &lt;/font&gt;* &lt;font color="#0000ff"&gt;FROM &lt;/font&gt;#tempFKeys&lt;/font&gt;
&lt;p&gt;&lt;br&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;      OPEN &lt;/font&gt;curForeignKeys&lt;br&gt;&lt;font color="#0000ff"&gt;      FETCH NEXT FROM&lt;/font&gt; curForeignKeys &lt;font color="#0000ff"&gt;INTO &lt;/font&gt;@primaryKeyTableQualifier, @primaryKeyTableOwner, @primaryKeyTableName, @primaryKeyColumnName, @foreignKeyTableQualifier, @foreignKeyTableOwner, @foreignKeyTableName, @foreignKeyColumnName, @keySequence, @updateRule, @deleteRule, &lt;br&gt;@foreignKeyName, @primaryKeyName, @deferrability&lt;/font&gt;
&lt;p&gt;&lt;font face=Verdana size=1&gt;&lt;/font&gt; 
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;      WHILE &lt;/font&gt;&lt;font color="#ff00ff"&gt;(@@FETCH_STATUS&lt;/font&gt; = 0)&lt;br&gt;&lt;font color="#0000ff"&gt;      BEGIN&lt;/font&gt;&lt;br&gt;&lt;font color="#008000"&gt;&lt;font color="#0000ff"&gt;         &lt;/font&gt;-- Call the sp again for dependancies&lt;br&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;         EXEC &lt;/font&gt;DeleteRecord @foreignKeyTableOwner, @foreignKeyTableName, @foreignKeyColumnName, @primaryKeyValues, @IsPrimaryKeyValueTypesString&lt;/font&gt;
&lt;p&gt;&lt;font face=Verdana size=1&gt;&lt;/font&gt; 
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;         FETCH NEXT FROM &lt;/font&gt;curForeignKeys &lt;font color="#0000ff"&gt;INTO &lt;/font&gt;@primaryKeyTableQualifier, @primaryKeyTableOwner, &lt;br&gt;@primaryKeyTableName, @primaryKeyColumnName, @foreignKeyTableQualifier, &lt;br&gt;@foreignKeyTableOwner, @foreignKeyTableName, @foreignKeyColumnName, &lt;br&gt;@keySequence, @updateRule, @deleteRule, &lt;br&gt;@foreignKeyName, @primaryKeyName, @deferrability&lt;/font&gt;
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;      END&lt;br&gt;      CLOSE&lt;/font&gt; curForeignKeys&lt;br&gt;&lt;font color="#0000ff"&gt;      DEALLOCATE &lt;/font&gt;curForeignKeys&lt;/font&gt;
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" color="#0000ff" size=1&gt;   END &lt;/font&gt;
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" color="#008000" size=1&gt;&lt;font color="#0000ff"&gt;   &lt;/font&gt;--*************************************************--&lt;br&gt;&lt;font color="#0000ff"&gt;   &lt;/font&gt;-- End region: Check dependancies&lt;br&gt;&lt;font color="#0000ff"&gt;   &lt;/font&gt;--*************************************************--&lt;/font&gt;
&lt;p&gt;&lt;br&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#008000"&gt;&lt;font color="#0000ff"&gt;   &lt;/font&gt;--*************************************************--&lt;br&gt;&lt;font color="#0000ff"&gt;   &lt;/font&gt;-- Region: Delete records&lt;br&gt;&lt;font color="#0000ff"&gt;   &lt;/font&gt;--*************************************************--&lt;/font&gt;&lt;br&gt;&lt;font color="#0000ff"&gt;   DECLARE &lt;/font&gt;@deleteStatement &lt;font color="#0000ff"&gt;varchar&lt;/font&gt;(5000)&lt;/font&gt;
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;   SET &lt;/font&gt;@deleteStatement = &lt;font color="#ff0000"&gt;'DELETE ' &lt;/font&gt;+ @ownerName + &lt;font color="#ff0000"&gt;'.' &lt;/font&gt;+ @tableName + &lt;font color="#ff0000"&gt;' WHERE ' &lt;/font&gt;&lt;/font&gt;
&lt;p&gt;&lt;font face=Verdana color="#ff0000" size=1&gt;&lt;/font&gt; 
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;   IF &lt;/font&gt;(@primaryKeyValues != &lt;font color="#ff0000"&gt;''&lt;/font&gt;)&lt;br&gt;&lt;font color="#0000ff"&gt;      SET &lt;/font&gt;@deleteStatement = @deleteStatement  + @tempPKeys_ColumnName + &lt;font color="#ff0000"&gt;' IN ('&lt;/font&gt; + @primaryKeyValues + &lt;font color="#ff0000"&gt;')'&lt;br&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;   ELSE &lt;/font&gt;&lt;font color="#008000"&gt;-- no primary keys. Add conditions with foreign keys&lt;br&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;      SET &lt;/font&gt;@deleteStatement = @deleteStatement + @columnName + &lt;font color="#ff0000"&gt;' IN ('&lt;/font&gt; + @primaryKeyValue + &lt;font color="#ff0000"&gt;')'&lt;/font&gt;&lt;/font&gt;
&lt;p&gt;&lt;font face=Verdana color="#ff0000" size=1&gt;&lt;/font&gt; 
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;font color="#0000ff"&gt;   EXEC &lt;/font&gt;(@deleteStatement)&lt;br&gt;&lt;font color="#008000"&gt;--*************************************************--&lt;br&gt;-- End region: Delete records&lt;br&gt;--*************************************************--&lt;/font&gt;&lt;/font&gt;
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" color="#0000ff" size=1&gt;END&lt;/font&gt;
&lt;p&gt;&lt;font face=Verdana color="#0000ff" size=1&gt;&lt;/font&gt; 
&lt;p&gt;&lt;font face=Verdana color="#000000" size=1&gt;To delete a record by using the SP;&lt;/font&gt;
&lt;p&gt;&lt;font face=Verdana color="#0000ff" size=1&gt;EXEC &lt;font color="#000000"&gt;DeleteRecord &lt;/font&gt;&lt;font color="#ff0000"&gt;'dbo'&lt;/font&gt;&lt;font color="#000000"&gt;, &lt;/font&gt;&lt;font color="#ff0000"&gt;'MyTable'&lt;/font&gt;&lt;font color="#000000"&gt;, &lt;font color="#ff0000"&gt;''&lt;/font&gt;, &lt;/font&gt;&lt;font color="#000000"&gt; &lt;font color="#ff0000"&gt;'7'&lt;/font&gt;, &lt;/font&gt;&lt;font color="#000000"&gt;0&lt;/font&gt;&lt;/font&gt;
&lt;p&gt;&lt;font face=Verdana size=1&gt;&lt;/font&gt; 
&lt;p&gt;&lt;font face=Verdana size=1&gt;If you come across any errors with this SP, please let me. Again, this has to be enhanced.&lt;/font&gt;
&lt;p&gt;&lt;font face=Verdana size=1&gt;&lt;/font&gt; 
&lt;p&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=1&gt;&lt;/font&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4683496953178731031&amp;page=RSS%3a+Delete+a+record+with+all+of+its+dependancies&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=dineshpriyankara.spaces.live.com&amp;amp;GT1=dineshpriyankara"&gt;</description><comments>http://dineshpriyankara.spaces.live.com/Blog/cns!40FF1FAA28D7B217!261.entry#comment</comments><guid isPermaLink="true">http://dineshpriyankara.spaces.live.com/Blog/cns!40FF1FAA28D7B217!261.entry</guid><pubDate>Mon, 08 Aug 2005 00:18:58 GMT</pubDate><slash:comments>2</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://dineshpriyankara.spaces.live.com/blog/cns!40FF1FAA28D7B217!261/comments/feed.rss</wfw:commentRss><wfw:comment>http://dineshpriyankara.spaces.live.com/Blog/cns!40FF1FAA28D7B217!261.entry#comment</wfw:comment><dcterms:modified>2005-08-08T03:20:59Z</dcterms:modified></item></channel></rss>