﻿<?xml version='1.0' encoding='UTF-8'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>SQLServerCentral / SQL Server 7,2000 / T-SQL  / T-Sql rant / Latest Posts</title><generator>InstantForum.NET v4.1.4</generator><description>SQLServerCentral</description><link>http://www.sqlservercentral.com/Forums/</link><webMaster>notifications@sqlservercentral.com</webMaster><lastBuildDate>Sat, 21 Nov 2009 15:10:02 GMT</lastBuildDate><ttl>20</ttl><item><title>RE: T-Sql rant</title><link>http://www.sqlservercentral.com/Forums/Topic675554-8-1.aspx</link><description>[quote][b]cs_troyk (4/6/2009)[/b][hr]Not to mention, Jeff, that you missed your mark by one post. Or is it OK for Sergiy to call Steve's post (or was it Steve?) "a pile of c--p"? Or perhaps you were bemoaning Steve's ability to draw such a response, and therefore blamed him for the remark?[/quote]Nope, it's not ok and nope, you don't get it... Steve has started many a conversation about all of this and despite his good passion about all of this, he makes Sergiy seem a saint.  Steve knows exactly what I'm talking about... don'cha Steve?</description><pubDate>Mon, 06 Apr 2009 16:57:07 GMT</pubDate><dc:creator>Jeff Moden</dc:creator></item><item><title>RE: T-Sql rant</title><link>http://www.sqlservercentral.com/Forums/Topic675554-8-1.aspx</link><description>Well, I'm lost in this thread.I'd hope it would be a good debate, but it looks like it's gotten confused with bad feelings between participants.At this point, I'm going to close this thread down. If you'd like to debate dataphor, there's a thread for that here: http://www.sqlservercentral.com/Forums/Topic685234-8-1.aspx</description><pubDate>Mon, 06 Apr 2009 16:46:41 GMT</pubDate><dc:creator>Steve Jones - Editor</dc:creator></item><item><title>RE: T-Sql rant</title><link>http://www.sqlservercentral.com/Forums/Topic675554-8-1.aspx</link><description>[font="Verdana"]Hmmm.This is like saying "I only know about two colours: blue and green.  Now this thing called "red" comes along...  is it blue or green?A table is, believe it or not, a [b]table[/b].  Shocking concept!  It is neither a variable or a constant.  Nor is it an object, although it could be considered a sub-class of a generic object.  It is closer to the concept of a file in many 3-gls, but it's not that either.You can instantiate a table as a variable.  It'd be nice to be able to instantiate one as a constant too!  But it is a first class citizen in it's own right.[/font]</description><pubDate>Mon, 06 Apr 2009 16:38:48 GMT</pubDate><dc:creator>Bruce W Cassidy</dc:creator></item><item><title>RE: T-Sql rant</title><link>http://www.sqlservercentral.com/Forums/Topic675554-8-1.aspx</link><description>[quote][b]steve dassin (4/6/2009)[/b][hr][quote][b]Jeff Moden (4/6/2009)[/b][hr][quote][b]steve dassin (4/6/2009)[/b][hr][quote][b]Sergiy (4/6/2009)[/b][hr][quote][b]steve dassin (4/5/2009)[/b][hr]getting sql folks to get their head out of what is essentially a 'constant' (an sql table) and into something that is variable. [/quote]Such a pile of c..p!What makes sql table a 'constant'???[/quote]Well I have a tacit agreement with the moderator to play nice and not raise the ire of any more participants here so I'll play nice :-) An sql table is certainly not a variable. If it's not then what then is it? I thought I was being kind and considerate calling it a constant (it has a value but no type. What is something with no type? Certainly not something that can support assignment). If that offends you perhaps you prefer a computer science type of lox :-) Of course the rectangular idea of rows and columns doesn't quite fit the idea of a bagel. It seems that trying to morph a lox into a variable offends you. Perhaps you can't envision programming without a lot of salt:-) I'm not sure how many here think variables are overrated. I'm just trying to reaquaint them to a long forgotten concept :-)best behavior steve,[url=http://www.beyondsql.blogspot.com][b]www.beyondsql.blogspot.com[/b][/url][/quote]And THAT is why you can't get anyone to even start to listen to you!  You always bring it down to ad hominem attacks.[/quote]That's an [i]attack[/i]!? You trying to get me in trouble? I sure hope the moderator has his R bar set higher than you do :-) I'm just poking a little humor around an important idea. Do you have something against a little levity too :-) I can understand your feeling of being protective of your peers but lets not tilt the playing field too much. Hey I haven't explicitly skewered sql nor anyone. I'm really not the sql scrooge. I bring good tidings and cheer:-)best (not worst),steve[url=http://www.beyondsql.blogspot.com][b]www.beyondsql.blogspot.com[/b][/url][/quote]Not to mention, Jeff, that you missed your mark by one post. Or is it OK for Sergiy to call Steve's post (or was it Steve?) "a pile of c--p"? Or perhaps you were bemoaning Steve's ability to draw such a response, and therefore blamed him for the remark?To get back to the point, though. If a T-SQL table is a variable, then why did MS introduce T-SQL "table variables" in SS2K5? Are they the same thing? If not, was it simply an unfortunate choice on MS's part to name the new construct such? If so, why introduce the new construct?What are some things we would expect to be able to do with proper programming variables that we are not able with T-SQL tables (or table variables)? Assignment? Passing as arguments? Comparison? Are T-SQL variables or table variables available to us for declaration and manipulation in the .NET language of your choice? What about other programming languages?Just a few things to think about.TroyK</description><pubDate>Mon, 06 Apr 2009 16:28:13 GMT</pubDate><dc:creator>cs_troyk</dc:creator></item><item><title>RE: T-Sql rant</title><link>http://www.sqlservercentral.com/Forums/Topic675554-8-1.aspx</link><description>[quote][b]Jeff Moden (4/6/2009)[/b][hr][quote][b]steve dassin (4/6/2009)[/b][hr][quote][b]Sergiy (4/6/2009)[/b][hr][quote][b]steve dassin (4/5/2009)[/b][hr]getting sql folks to get their head out of what is essentially a 'constant' (an sql table) and into something that is variable. [/quote]Such a pile of c..p!What makes sql table a 'constant'???[/quote]Well I have a tacit agreement with the moderator to play nice and not raise the ire of any more participants here so I'll play nice :-) An sql table is certainly not a variable. If it's not then what then is it? I thought I was being kind and considerate calling it a constant (it has a value but no type. What is something with no type? Certainly not something that can support assignment). If that offends you perhaps you prefer a computer science type of lox :-) Of course the rectangular idea of rows and columns doesn't quite fit the idea of a bagel. It seems that trying to morph a lox into a variable offends you. Perhaps you can't envision programming without a lot of salt:-) I'm not sure how many here think variables are overrated. I'm just trying to reaquaint them to a long forgotten concept :-)best behavior steve,[url=http://www.beyondsql.blogspot.com][b]www.beyondsql.blogspot.com[/b][/url][/quote]And THAT is why you can't get anyone to even start to listen to you!  You always bring it down to ad hominem attacks.[/quote]That's an [i]attack[/i]!? You trying to get me in trouble? I sure hope the moderator has his R bar set higher than you do :-) I'm just poking a little humor around an important idea. Do you have something against a little levity too :-) I can understand your feeling of being protective of your peers but lets not tilt the playing field too much. Hey I haven't explicitly skewered sql nor anyone. I'm really not the sql scrooge. I bring good tidings and cheer:-)best (not worst),steve[url=http://www.beyondsql.blogspot.com][b]www.beyondsql.blogspot.com[/b][/url]</description><pubDate>Mon, 06 Apr 2009 14:50:05 GMT</pubDate><dc:creator>steve dassin</dc:creator></item><item><title>RE: T-Sql rant</title><link>http://www.sqlservercentral.com/Forums/Topic675554-8-1.aspx</link><description>[quote][b]steve dassin (4/6/2009)[/b][hr][quote][b]Sergiy (4/6/2009)[/b][hr][quote][b]steve dassin (4/5/2009)[/b][hr]getting sql folks to get their head out of what is essentially a 'constant' (an sql table) and into something that is variable. [/quote]Such a pile of c..p!What makes sql table a 'constant'???[/quote]Well I have a tacit agreement with the moderator to play nice and not raise the ire of any more participants here so I'll play nice :-) An sql table is certainly not a variable. If it's not then what then is it? I thought I was being kind and considerate calling it a constant (it has a value but no type. What is something with no type? Certainly not something that can support assignment). If that offends you perhaps you prefer a computer science type of lox :-) Of course the rectangular idea of rows and columns doesn't quite fit the idea of a bagel. It seems that trying to morph a lox into a variable offends you. Perhaps you can't envision programming without a lot of salt:-) I'm not sure how many here think variables are overrated. I'm just trying to reaquaint them to a long forgotten concept :-)best behavior steve,[url=http://www.beyondsql.blogspot.com][b]www.beyondsql.blogspot.com[/b][/url][/quote]I have to admit I don't follow you in the slightest, but maybe that's because I prefer donuts.  (And yes, that makes just about as much sense as your post.)Tables are neither variables nor constants.  You don't assign values to tables.</description><pubDate>Mon, 06 Apr 2009 14:38:28 GMT</pubDate><dc:creator>GSquared</dc:creator></item><item><title>RE: T-Sql rant</title><link>http://www.sqlservercentral.com/Forums/Topic675554-8-1.aspx</link><description>[quote][b]Jeff Moden (4/6/2009)[/b][hr]I've never understood why they can't just use "=" instead of ":=", why they need ";" to identify the end of a "thought" that the compiler should easily recognize like the interpreter in T-SQL does.[/quote][font="Verdana"]The := is a hang over from crappy keyboards unable to do the true mathematical assignment operator, so when the language designers for Algol came along, they decided on that instead.  They didn't use = as that is used for comparison.  Pascal (an Algol derivative) made := popular (well, not that Algol wasn't popular in it's own right), and Ada followed suit.  There are a [b]lot[/b] of languages that use the := notation.C (C++, Java, C#, Objective C, etc) and BASIC (including Visual Basic) on the other hand have different roots.  BASIC quite happily uses = for both assignment and comparison, making statements like LET A=B=C quite legitimate.  Personally, I find C the most confusing, with == for comparison.Statement separators is more essential for the classic 3-GL type of language because otherwise a compiler cannot tell easily when a statement ends, and the execution times for compiling go through the ceiling.  Note that even T-SQL is getting this now (the ; before a WITH?)  So it's actually not easy to recognise breaks in statements.There have been a couple of languages (anyone remember BASIC?) that used lines as statement separators.  But that has issues as well.Oracle PL/SQL (as you well know) uses ; also.Nature of the beast on that one.[/font]</description><pubDate>Mon, 06 Apr 2009 14:29:35 GMT</pubDate><dc:creator>Bruce W Cassidy</dc:creator></item><item><title>RE: T-Sql rant</title><link>http://www.sqlservercentral.com/Forums/Topic675554-8-1.aspx</link><description>[font="Verdana"]:blink:Last time I looked, the definition of a "constant" was something that was invariant.Tables vary.So, not constants.I agree with many of your (earlier) points about SQL as a language.  Yet the points I made about enterprise adoption of new languages still stand.  Using SQL Server is not all about just T-SQL.And please keep in mind that SQL Server is not just one language.  T-SQL, MDX, whatever you call the hodge-podge of SSIS, integration with .Net CLR, adoption of PowerShell...  from a language purist point of view, it's a nightmare!And yet...  it works.  :-D[/font]</description><pubDate>Mon, 06 Apr 2009 14:17:30 GMT</pubDate><dc:creator>Bruce W Cassidy</dc:creator></item><item><title>RE: T-Sql rant</title><link>http://www.sqlservercentral.com/Forums/Topic675554-8-1.aspx</link><description>[quote][b]foxjazz (3/14/2009)[/b][hr]Ok set this baby... Real world.I have a table category fields are description, catID, typeID. parentIDanother tables queryed with (make, model, yr, engine).in the category table makes are typeid = 1, models typeid = 2, years , typeid = 3, engines, typeid = 4.for each model, the parentid points to the make of the model. Yes it's hierarchical.This is real world folks, do this in T-Sql without using a cursor.And it doesn't matter whether identity insert is set to on or off, can be either way on the primary key (CATID).If there is anything I left out, let me know.[/quote]REAL WORLD:I will ignore this hypothetical example and focus instead on an actual example in my company.I have a table categorize adjustments. Each adjustment goes to one and only one category, but each category can belong to a parent group. So I have a table tAdjustmentCategory as defined in the construct SQL excerpt below.[code]CREATE TABLE [dbo].[tAdjustmentCategory](	[Key] [int] IDENTITY(1,1) NOT NULL,	[Label] [varchar](75) NOT NULL,	[Parent] [int] NULL, CONSTRAINT [PK_tAdjustmentCategory] PRIMARY KEY CLUSTERED ([Key] ASC)[/code]Now with this table I can move categories around and define as in depth a hierarchy as possible. But how to use it?Well, to get a look at the tree in a human readable format, I use this view:[code]ALTER VIEW [dbo].[vAdjustmentCategoryTree]  WITH SCHEMABINDINGASWITH AdjCategoryTreeAS(	SELECT A.[Key], A.Label, CONVERT(VARCHAR(MAX), Label) AS LabelPath, A.Parent, 0 AS Depth	FROM dbo.tAdjustmentCategory A WITH (NOLOCK)	WHERE Parent IS NULL	UNION ALL	SELECT A.[Key], A.Label, CONVERT(VARCHAR(MAX), B.LabelPath + '|' + A.Label) AS LabelPath, A.Parent, B.Depth + 1	FROM dbo.tAdjustmentCategory A WITH (NOLOCK)		JOIN AdjCategoryTree B		ON A.Parent = B.[Key])SELECT TOP 100 PERCENT [Key],  REPLICATE('    ', Depth) + Label AS DisplayLabel, Label	, ROW_NUMBER() OVER (ORDER BY LabelPath) AS [Order], DepthFROM AdjCategoryTreeORDER BY LabelPath[/code]And to actually query all members of a specific node I use this view:[code]ALTER VIEW [dbo].[vAdjustmentCategoryAncestry]  WITH SCHEMABINDINGASWITH AdjCategoryTreeAS(	SELECT A.[Key], A.Label, A.Parent, A.[Key] AS Origin	FROM dbo.tAdjustmentCategory A WITH (NOLOCK)	UNION ALL	SELECT A.[Key], A.Label, A.Parent, B.Origin	FROM dbo.tAdjustmentCategory A WITH (NOLOCK)		JOIN AdjCategoryTree B		ON A.Parent = B.[Key])SELECT Origin AS Parent, [Key] AS ChildFROM AdjCategoryTree[/code]Now these views may not be the most optimized solutions to using this set, but I am not using the 2008 Hierarchy structure. And this is real world. Oh, and I bet it performs better than C#.The key to gaining knowledge is to first admit that you do not know. A wise man never says "this is what I know", but instead says "this is as I understand it" or "this is what I believe".</description><pubDate>Mon, 06 Apr 2009 10:30:56 GMT</pubDate><dc:creator>Timothy J Hartford</dc:creator></item><item><title>RE: T-Sql rant</title><link>http://www.sqlservercentral.com/Forums/Topic675554-8-1.aspx</link><description>steve - sounds to me that you need to get yourself nominated to sit on the ANSI SQL standards board.  It is clear to me that you have a. some strong opinions and b. some ideas as to how to "fix SQL".  I'm not going to go into whether they're right or not, whether I agreee or not - there are hundreds of posts in this thread already belaboring those points.What I will say is - show me any of those solutions that maintain  close ties to Codd's laws, normalization, the ACID principles, AND maintain best practices as to keeping your development and applications layers in order and separate.  A LOT of smart people have been spending a LOT of time trying to balance all of these various priorities, so I'm not willing to just say they're wrong and chuck what's been done.  Not given the processing and performance standards that are being established by BOTH SQL Server and Oracle.  I have yet to see anything that can process data as fast as either, and for that I am willing to give a few things up.  Do I have some rules about how the data needs to be organized?  Fine - I can live with that.  Etc...It comes down to pain vs. gain.  You clearly think things are broken somewhere, and good for you.  But ask yourself what you give up when you introduce all of these new ideas into the mix.It's ultimately the same challenge I put to Mr. Date and those of the 3rd Manifesto:  your theory sounds good, but the commercial application of those ideas are worse than what they intend to replace. 6NF might look nice on the simplest of models, but it's a nightmare in HealthCare/Insurance/Telecom;  No server hardware currently available oculd handle the load required to back those madels up.  If you can fix those issues, THEN I may listen.</description><pubDate>Mon, 06 Apr 2009 09:33:56 GMT</pubDate><dc:creator>Matt Miller (#4)</dc:creator></item><item><title>RE: T-Sql rant</title><link>http://www.sqlservercentral.com/Forums/Topic675554-8-1.aspx</link><description>[quote][b]Jeff Moden (4/6/2009)[/b][hr][quote][b]Mike C (4/5/2009)[/b][hr]Oracle is good about implementing new features and functionality really quickly...  sometimes they even get their features out to market before the ISO standards updates are approved.[/quote]That's not been my observation... hasn't DATEDIFF, DATEADD, and DATEPART part of the standard for quite a while?  And wasn't CASE part of the standard for a very long time like way before 9i2?And, I absolutely agree with you and Bruce.  Set-Based beats the tar out of RBAR even in Oracle.  The problem is that there are some places where you can't actually avoid it.  For example, triggers don't allow manipulation of DELETES or INSERTS except by one row at a time using the FOR EACH ROW clause.I haven't had to touch Oracle in about 9 months... it's been a great 9 months. :-D[/quote]I can't really speak for older versions of Oracle, but analytic functions (windowing/ranking functions), the MERGE statement, CTEs, XML support and a lot of other SQL:2003 standard items have been in Oracle since before even the SQL Server 2005 was released.  I was discussing the new features in Oracle with a Java/Oracle developer back in 2002.  Analytic functions, for instance, were available in Oracle 9i back in 2001 or 2002 (I can't remember exactly when it came out...)  We got a partial implementation in SQL 2005.  There are quite a few Connect items requesting new functionality in SQL Server that already exists in one form or another in Oracle -- like full support for windowing/ranking functions per the ISO SQL standard that's already 6 years old.</description><pubDate>Mon, 06 Apr 2009 09:22:36 GMT</pubDate><dc:creator>Mike C</dc:creator></item><item><title>RE: T-Sql rant</title><link>http://www.sqlservercentral.com/Forums/Topic675554-8-1.aspx</link><description>[quote][b]steve dassin (4/6/2009)[/b][hr][quote][b]Sergiy (4/6/2009)[/b][hr][quote][b]steve dassin (4/5/2009)[/b][hr]getting sql folks to get their head out of what is essentially a 'constant' (an sql table) and into something that is variable. [/quote]Such a pile of c..p!What makes sql table a 'constant'???[/quote]An sql table is certainly not a variable. If it's not then what then is it?[url=http://www.beyondsql.blogspot.com][b]www.beyondsql.blogspot.com[/b][/url][/quote]Back in my CS classes we used to call it a... you know... "data structure".</description><pubDate>Mon, 06 Apr 2009 09:09:32 GMT</pubDate><dc:creator>Mike C</dc:creator></item><item><title>RE: T-Sql rant</title><link>http://www.sqlservercentral.com/Forums/Topic675554-8-1.aspx</link><description>[quote][b]steve dassin (4/6/2009)[/b][hr][quote][b]Sergiy (4/6/2009)[/b][hr][quote][b]steve dassin (4/5/2009)[/b][hr]getting sql folks to get their head out of what is essentially a 'constant' (an sql table) and into something that is variable. [/quote]Such a pile of c..p!What makes sql table a 'constant'???[/quote]Well I have a tacit agreement with the moderator to play nice and not raise the ire of any more participants here so I'll play nice :-) An sql table is certainly not a variable. If it's not then what then is it? I thought I was being kind and considerate calling it a constant (it has a value but no type. What is something with no type? Certainly not something that can support assignment). If that offends you perhaps you prefer a computer science type of lox :-) Of course the rectangular idea of rows and columns doesn't quite fit the idea of a bagel. It seems that trying to morph a lox into a variable offends you. Perhaps you can't envision programming without a lot of salt:-) I'm not sure how many here think variables are overrated. I'm just trying to reaquaint them to a long forgotten concept :-)best behavior steve,[url=http://www.beyondsql.blogspot.com][b]www.beyondsql.blogspot.com[/b][/url][/quote]And THAT is why you can't get anyone to even start to listen to you!  You always bring it down to ad hominem attacks.</description><pubDate>Mon, 06 Apr 2009 06:48:21 GMT</pubDate><dc:creator>Jeff Moden</dc:creator></item><item><title>RE: T-Sql rant</title><link>http://www.sqlservercentral.com/Forums/Topic675554-8-1.aspx</link><description>[quote][b]steve dassin (4/5/2009)[/b][hr]I'm not trying to sell you anything. I'm trying to get you to go in for some trippy stuff :-)[/quote]Heh... it's some trippy stuff, alright.  I've never understood why they can't just use "=" instead of ":=", why they need ";" to identify the end of a "thought" that the compiler should easily recognize like the interpreter in T-SQL does.  The code you have there kinda looks like the same thing that Enterprise Manager does... unnecessary brackets and parenthesis all over the place.And then there's just plain old bad design...select table{MyView['Poland' by {ShipCountry}]};[font="Arial Black"]//A row converted to a table.[/font]That pretty much tells me that someone just doesn't understand the structure of a table. Man, I'm [font="Arial Black"]SO[/font] happy to have gotten away from all that.  You do what you want in that world... stop complaining about mine.  That's exactly what you would say if the tables were turned.  Adapt or don't use it.</description><pubDate>Mon, 06 Apr 2009 06:41:32 GMT</pubDate><dc:creator>Jeff Moden</dc:creator></item><item><title>RE: T-Sql rant</title><link>http://www.sqlservercentral.com/Forums/Topic675554-8-1.aspx</link><description>[quote][b]Mike C (4/5/2009)[/b][hr]Oracle is good about implementing new features and functionality really quickly...  sometimes they even get their features out to market before the ISO standards updates are approved.[/quote]That's not been my observation... hasn't DATEDIFF, DATEADD, and DATEPART part of the standard for quite a while?  And wasn't CASE part of the standard for a very long time like way before 9i2?And, I absolutely agree with you and Bruce.  Set-Based beats the tar out of RBAR even in Oracle.  The problem is that there are some places where you can't actually avoid it.  For example, triggers don't allow manipulation of DELETES or INSERTS except by one row at a time using the FOR EACH ROW clause.I haven't had to touch Oracle in about 9 months... it's been a great 9 months. :-D</description><pubDate>Mon, 06 Apr 2009 06:22:11 GMT</pubDate><dc:creator>Jeff Moden</dc:creator></item><item><title>RE: T-Sql rant</title><link>http://www.sqlservercentral.com/Forums/Topic675554-8-1.aspx</link><description>[quote][b]steve dassin (4/6/2009)[/b][hr] An sql table is certainly not a variable. [/quote]Who says?Any ground for this statement?[quote]I thought I was being kind and considerate calling it a constant (it has a value but no type. [/quote]What???[quote]What is something with no type? Certainly not something that can support assignment). [/quote]You want to say a it's a constant?Do you really mean a constant does not have a type?How computer allocates memory for it then?[quote]If that offends you perhaps you prefer a computer science type of lox :-)[/quote] Would it offend you if I say you're missing some essential computer education from school?</description><pubDate>Mon, 06 Apr 2009 04:46:21 GMT</pubDate><dc:creator>Sergiy</dc:creator></item><item><title>RE: T-Sql rant</title><link>http://www.sqlservercentral.com/Forums/Topic675554-8-1.aspx</link><description>[quote][b]Sergiy (4/6/2009)[/b][hr][quote][b]steve dassin (4/5/2009)[/b][hr]getting sql folks to get their head out of what is essentially a 'constant' (an sql table) and into something that is variable. [/quote]Such a pile of c..p!What makes sql table a 'constant'???[/quote]Well I have a tacit agreement with the moderator to play nice and not raise the ire of any more participants here so I'll play nice :-) An sql table is certainly not a variable. If it's not then what then is it? I thought I was being kind and considerate calling it a constant (it has a value but no type. What is something with no type? Certainly not something that can support assignment). If that offends you perhaps you prefer a computer science type of lox :-) Of course the rectangular idea of rows and columns doesn't quite fit the idea of a bagel. It seems that trying to morph a lox into a variable offends you. Perhaps you can't envision programming without a lot of salt:-) I'm not sure how many here think variables are overrated. I'm just trying to reaquaint them to a long forgotten concept :-)best behavior steve,[url=http://www.beyondsql.blogspot.com][b]www.beyondsql.blogspot.com[/b][/url]</description><pubDate>Mon, 06 Apr 2009 03:39:07 GMT</pubDate><dc:creator>steve dassin</dc:creator></item><item><title>RE: T-Sql rant</title><link>http://www.sqlservercentral.com/Forums/Topic675554-8-1.aspx</link><description>[quote][b]steve dassin (4/5/2009)[/b][hr]getting sql folks to get their head out of what is essentially a 'constant' (an sql table) and into something that is variable. [/quote]Such a pile of c..p!What makes sql table a 'constant'???</description><pubDate>Mon, 06 Apr 2009 01:40:44 GMT</pubDate><dc:creator>Sergiy</dc:creator></item><item><title>RE: T-Sql rant</title><link>http://www.sqlservercentral.com/Forums/Topic675554-8-1.aspx</link><description>[quote][b]steve dassin (4/5/2009)[/b][hr]CREATE TABLE T (A INT,B VARCHAR(25))SELECT A,B FROM TCREATE VIEW T1 SELECT A,B FROM TSELECT A,B INTO T1 FROM T1CREATE PROCEDURE T3 SELECT A,B FROM TCREATE FUNCTION T4(A VARCHAR(25))RETURNS T5 TABLE(.....DECLARE @MyTableVar table(    EmpID int NOT NULL,    OldVacationHours int,    NewVacationHours int,    ModifiedDate datetime);What do all these sql table operations have in common? None of them have anything to do nor any relationship to the concept of a variable, a variable like you could declare for a number or string. A language in search of even a rudimentary computer science!:-) Developers, especially new developers, are struck not so much with the problem of learning a declarative syntax but with the problem of manipulating things in an environment devoid of variables. And you wonder why most developers think sql is nuts?:-) The fundamental idea of a relational system is introducing the idea of a strongly typed variable that replaces the sql non-variable table. And if you're going to jack around tables as variables it should be relatively easy to envisiona type of environment much more friendly to variables than sql. Sql can safely ignore the concept because it doesn't exist there! The basic problem, as people like C. J. Date have found out, is getting sql folks to get their head out of what is essentially a 'constant' (an sql table) and into something that is variable. This is really nothing more than basic computer science and the science that lies at the base of what a relational db is all about. Sql folks have their heads in a very different place namely declarative programming. But this type of thinking is not at the root of  things. First come variable and types. But because they have been separated from such considerations, sql folks have a hard time getting their heads around these ideas. Hell why should they, they've gottin along without types and variables forever!:-) Most of my blog articles are about what an environment looks like when a declarative language is within a system where everything is expressed thru variables. Don't expect it to lookanything like sql. Nor expect it to be a copy of C#. But you should imagine it as a place you'd at least like to visit. You can then make up your mind if you'd want to live there :-)best,steve[url=http://www.beyondsql.blogspot.com][b]www.beyondsql.blogspot.com[/b][/url][/quote]The example you posted still looks an awful lot (to me) like what I get with LINQ on C# (or VB).  Not an exact copy, but very similar functionality and syntax.  Like your sample, I can assign a result to a variable and easily convert between lists, hash tables, arrays, etc.  I can also intersperse declarative query syntax with procedural code at will. The fact that I already know C# and don't need to learn a new language or new tools helps a bit also.</description><pubDate>Mon, 06 Apr 2009 00:37:32 GMT</pubDate><dc:creator>Mike C</dc:creator></item><item><title>RE: T-Sql rant</title><link>http://www.sqlservercentral.com/Forums/Topic675554-8-1.aspx</link><description>[quote][b]Bruce W Cassidy (4/5/2009)[/b][hr][quote][b]Mike C (4/5/2009)[/b][hr]Oracle is good about implementing new features and functionality really quickly...  sometimes they even get their features out to market before the ISO standards updates are approved.[/quote][font="Verdana"]I've always thought it was a bit of leap-frog happening.  I remember that SQL Server got ANSI join syntax long before Oracle did.  I hated having to go back to coding SQL in Oracle and trying to remember how to do outer joins...I miss NATURAL JOIN though.  Is that an ANSI SQL feature, or an Oracle feature?[/font][/quote]I believe it was in one of the ANSI/ISO standards, maybe SQL:1999?  But I don't think it really caught on. The fact that you had to maintain strict column naming between tables made it a little hard to backport to legacy databases that didn't do such a good job of maintaining strict naming conventions. Another ANSI/ISO feature that never seemed to catch on was the Boolean data type.As far as the features, SQL Server 2000 was SQL-92 compliant. And it came out the year after the SQL:1999 standard...  SQL Server 2008 doesn't really claim compliance with ANSI/ISO, but from what I could gather it's SQL-92 compliant with a few additional SQL:2003 features and a lot of vendor-specific niceties, many carried over from SQL Server 2005.</description><pubDate>Mon, 06 Apr 2009 00:30:14 GMT</pubDate><dc:creator>Mike C</dc:creator></item><item><title>RE: T-Sql rant</title><link>http://www.sqlservercentral.com/Forums/Topic675554-8-1.aspx</link><description>[quote][b]Mike C (4/5/2009)[/b][hr][quote][b]steve dassin (4/5/2009)[/b][hr]My apologies. I certainly didn't mean to imply curlies were the [i]only[/i] way to specify tables and table expressions. Here are some simple examples of Curly and parenthesis in various expression.//Declare table variables (composables).var Abbot:=table            [b]{[/b]                row[b]{[/b]10249 OrderID,51 ProductID,40 Quantity[b]}[/b],               row[b]{[/b]10250,41,10[b]}[/b],               row[b]{[/b]10248,72,5[b]}[/b]            [b]}[/b];var Groucho:=Orders group by [b]{[/b]ShipCountry[b]}[/b] add[b]{[/b]Count[b]([/b][b])[/b] Cnt[b]}[/b]                         where Cnt&amp;lt;10;  var Zeppo:=SQLQuery[b]([/b]"SELECT OrderID,ProductID,Quantity                               FROM [Order Details]"[b])[/b]; //T-sql pass-thru query.select ToTable[b]([/b]'A,B,C'.Split[b]([/b]','[b])[/b][b])[/b];//Convert a delimited string to a list then a table.select ToTable[b]([/b][b]{[/b]'A','B','C'[b]}[/b][b])[/b];     //Convert a declared list to a table.    create view MyView [b]([/b]   [b]([/b]     [b]([/b]Orders where ShipCountry in [b]{[/b]'Norway','Poland'[b]}[/b][b])[/b]       join        OrderDetails    [b])[/b]           [b]{[/b]OrderID,CustomerID,ProductID,ShipCountry,Quantity,Freight[b]}[/b]   [b])[/b]       group by [b]{[/b]CustomerID,ShipCountry} add[b]{[/b]Count() Cnt,Max(Quantity) MaxQty,Max(Freight) MaxFrt[b]}[/b];         adorn[b]{[/b]key[b]{[/b]CustomerID[b]}[/b],key[b]{[/b]ShipCountry[b]}[/b][b]}[/b];select MyView['SANTG' by [b]{[/b]CustomerID[b]}[/b]] //A rowselect table[b]{[/b]MyView['Poland' by [b]{[/b]ShipCountry[b]}[/b]][b]}[/b];//A row converted to a table.I'm not trying to sell you anything. I'm trying to get you to go in for some trippy stuff :-)best,steve[url=http://www.beyondsql.blogspot.com][b]www.beyondsql.blogspot.com[/b][/url][/quote]Looks an awful lot like I'd imagine LINQ in VisualPascal.NET, if I were into imagining such things.[/quote]CREATE TABLE T (A INT,B VARCHAR(25))SELECT A,B FROM TCREATE VIEW T1 SELECT A,B FROM TSELECT A,B INTO T1 FROM T1CREATE PROCEDURE T3 SELECT A,B FROM TCREATE FUNCTION T4(A VARCHAR(25))RETURNS T5 TABLE(.....DECLARE @MyTableVar table(    EmpID int NOT NULL,    OldVacationHours int,    NewVacationHours int,    ModifiedDate datetime);What do all these sql table operations have in common? None of them have anything to do nor any relationship to the concept of a variable, a variable like you could declare for a number or string. A language in search of even a rudimentary computer science!:-) Developers, especially new developers, are struck not so much with the problem of learning a declarative syntax but with the problem of manipulating things in an environment devoid of variables. And you wonder why most developers think sql is nuts?:-) The fundamental idea of a relational system is introducing the idea of a strongly typed variable that replaces the sql non-variable table. And if you're going to jack around tables as variables it should be relatively easy to envisiona type of environment much more friendly to variables than sql. Sql can safely ignore the concept because it doesn't exist there! The basic problem, as people like C. J. Date have found out, is getting sql folks to get their head out of what is essentially a 'constant' (an sql table) and into something that is variable. This is really nothing more than basic computer science and the science that lies at the base of what a relational db is all about. Sql folks have their heads in a very different place namely declarative programming. But this type of thinking is not at the root of  things. First come variable and types. But because they have been separated from such considerations, sql folks have a hard time getting their heads around these ideas. Hell why should they, they've gottin along without types and variables forever!:-) Most of my blog articles are about what an environment looks like when a declarative language is within a system where everything is expressed thru variables. Don't expect it to lookanything like sql. Nor expect it to be a copy of C#. But you should imagine it as a place you'd at least like to visit. You can then make up your mind if you'd want to live there :-)best,steve[url=http://www.beyondsql.blogspot.com][b]www.beyondsql.blogspot.com[/b][/url]</description><pubDate>Sun, 05 Apr 2009 23:56:49 GMT</pubDate><dc:creator>steve dassin</dc:creator></item><item><title>RE: T-Sql rant</title><link>http://www.sqlservercentral.com/Forums/Topic675554-8-1.aspx</link><description>[quote][b]Mike C (4/5/2009)[/b][hr]Oracle is good about implementing new features and functionality really quickly...  sometimes they even get their features out to market before the ISO standards updates are approved.[/quote][font="Verdana"]I've always thought it was a bit of leap-frog happening.  I remember that SQL Server got ANSI join syntax long before Oracle did.  I hated having to go back to coding SQL in Oracle and trying to remember how to do outer joins...I miss NATURAL JOIN though.  Is that an ANSI SQL feature, or an Oracle feature?[/font]</description><pubDate>Sun, 05 Apr 2009 22:44:56 GMT</pubDate><dc:creator>Bruce W Cassidy</dc:creator></item><item><title>RE: T-Sql rant</title><link>http://www.sqlservercentral.com/Forums/Topic675554-8-1.aspx</link><description>[quote][b]Bruce W Cassidy (4/5/2009)[/b][hr][quote][b]Mike C (4/5/2009)[/b][hr]Forget the Oracle version of this site -- I can think of dozens of people who could use this type of mythbusting information that visit this site.  Steve might even be willing to publish an article on it here.  I know about 20 or 30 folks off the top of my Blackberry list who need to know this.  Some developers who come from Oracle backgrounds over to SQL Server carry their bad habits with them.  And a lot of other developers who come from C#, C++, VB, etc., carry their loop-based array ideas over with them.  I think everyone could use better information.[/quote][font="Verdana"]As with everything, the proof is in the data.  Just put together a cursor-based bit of code with the comparible set-based bit of code, and compare the differences.Here's some other food for thought:  Oracle introduced the MERGE command well before it arrived in SQL Server.  MERGE is used to do set-based inserts and updates in one go (and often called an "UPSERT"), usually to avoid a cursor-based solution -- although you can do the equivalent with a couple of set-based statements.So if cursors are so great in Oracle, why the pressing need for a MERGE command?Anyway, it's not hard to come up with test cases to compare cursors to set-based.  I suspect if I took some time and did a google search, I might even be able to find some already.But then, I already [b]know[/b] (from my own experience) that cursors in Oracle suck.  :-D[/font][/quote]You brought up one of the main issues that I've spent time (with others) trying to press MS about.  Namely introducing support for new ANSI/ISO features faster. Oracle is good about implementing new features and functionality really quickly...  sometimes they even get their features out to market before the ISO standards updates are approved.  I suspect this has probably bitten them in the butt a couple of times, but on the whole Oracle developers get a lot of great features and functionality really early in the cycle.  Ranking and windowing function support are a great example of that; the MERGE statement (originally planned for SQL 2005, btw, but pulled at the last minute -- and now back in SQL 2008) is another.But anyway, the point being that Oracle may well have just implemented MERGE because it was being added to the ISO standard, but not out of any particular pressure from developers (I can't really say one way or the other).</description><pubDate>Sun, 05 Apr 2009 22:38:48 GMT</pubDate><dc:creator>Mike C</dc:creator></item><item><title>RE: T-Sql rant</title><link>http://www.sqlservercentral.com/Forums/Topic675554-8-1.aspx</link><description>[quote][b]Mike C (4/5/2009)[/b][hr]Forget the Oracle version of this site -- I can think of dozens of people who could use this type of mythbusting information that visit this site.  Steve might even be willing to publish an article on it here.  I know about 20 or 30 folks off the top of my Blackberry list who need to know this.  Some developers who come from Oracle backgrounds over to SQL Server carry their bad habits with them.  And a lot of other developers who come from C#, C++, VB, etc., carry their loop-based array ideas over with them.  I think everyone could use better information.[/quote][font="Verdana"]As with everything, the proof is in the data.  Just put together a cursor-based bit of code with the comparible set-based bit of code, and compare the differences.Here's some other food for thought:  Oracle introduced the MERGE command well before it arrived in SQL Server.  MERGE is used to do set-based inserts and updates in one go (and often called an "UPSERT"), usually to avoid a cursor-based solution -- although you can do the equivalent with a couple of set-based statements.So if cursors are so great in Oracle, why the pressing need for a MERGE command?Anyway, it's not hard to come up with test cases to compare cursors to set-based.  I suspect if I took some time and did a google search, I might even be able to find some already.But then, I already [b]know[/b] (from my own experience) that cursors in Oracle suck.  :-D[/font]</description><pubDate>Sun, 05 Apr 2009 22:21:33 GMT</pubDate><dc:creator>Bruce W Cassidy</dc:creator></item><item><title>RE: T-Sql rant</title><link>http://www.sqlservercentral.com/Forums/Topic675554-8-1.aspx</link><description>[quote][b]steve dassin (4/5/2009)[/b][hr]My apologies. I certainly didn't mean to imply curlies were the [i]only[/i] way to specify tables and table expressions. Here are some simple examples of Curly and parenthesis in various expression.//Declare table variables (composables).var Abbot:=table            [b]{[/b]                row[b]{[/b]10249 OrderID,51 ProductID,40 Quantity[b]}[/b],               row[b]{[/b]10250,41,10[b]}[/b],               row[b]{[/b]10248,72,5[b]}[/b]            [b]}[/b];var Groucho:=Orders group by [b]{[/b]ShipCountry[b]}[/b] add[b]{[/b]Count[b]([/b][b])[/b] Cnt[b]}[/b]                         where Cnt&amp;lt;10;  var Zeppo:=SQLQuery[b]([/b]"SELECT OrderID,ProductID,Quantity                               FROM [Order Details]"[b])[/b]; //T-sql pass-thru query.select ToTable[b]([/b]'A,B,C'.Split[b]([/b]','[b])[/b][b])[/b];//Convert a delimited string to a list then a table.select ToTable[b]([/b][b]{[/b]'A','B','C'[b]}[/b][b])[/b];     //Convert a declared list to a table.    create view MyView [b]([/b]   [b]([/b]     [b]([/b]Orders where ShipCountry in [b]{[/b]'Norway','Poland'[b]}[/b][b])[/b]       join        OrderDetails    [b])[/b]           [b]{[/b]OrderID,CustomerID,ProductID,ShipCountry,Quantity,Freight[b]}[/b]   [b])[/b]       group by [b]{[/b]CustomerID,ShipCountry} add[b]{[/b]Count() Cnt,Max(Quantity) MaxQty,Max(Freight) MaxFrt[b]}[/b];         adorn[b]{[/b]key[b]{[/b]CustomerID[b]}[/b],key[b]{[/b]ShipCountry[b]}[/b][b]}[/b];select MyView['SANTG' by [b]{[/b]CustomerID[b]}[/b]] //A rowselect table[b]{[/b]MyView['Poland' by [b]{[/b]ShipCountry[b]}[/b]][b]}[/b];//A row converted to a table.I'm not trying to sell you anything. I'm trying to get you to go in for some trippy stuff :-)best,steve[url=http://www.beyondsql.blogspot.com][b]www.beyondsql.blogspot.com[/b][/url][/quote]Looks an awful lot like I'd imagine LINQ in VisualPascal.NET, if I were into imagining such things.</description><pubDate>Sun, 05 Apr 2009 22:08:55 GMT</pubDate><dc:creator>Mike C</dc:creator></item><item><title>RE: T-Sql rant</title><link>http://www.sqlservercentral.com/Forums/Topic675554-8-1.aspx</link><description>[quote][b]Bruce W Cassidy (4/5/2009)[/b][hr][font="Verdana"]To be frank, in my experience the issues with cursor-based code in Oracle have been concealed by the huge overkill of hardware assigned to Oracle databases.  The same database on SQL Server would be running on smaller hardware, so issues with poor coding would be more apparent.I think that's likely to be less the case now.  Oracle databases have been flocking to commodity servers (usually Linux based Intel hardware) for years now, and the difference in the hardware base between comparible Oracle and SQL Server solutions has largely disappeared.In my personal experience, I took some code that had been produced by a commercial Oracle development company to refresh a data rollup used for reporting.  It was taking 22 hours to run.  Sure enough, it was written as a cursor within a cursor within a cursor.  I rewrote it as one set-based update and one set-based insert, and saw the time drop to under 20 minutes.I had another example where I got even more of a change in code execution times (19 hours down to 2 minutes), but that was a cursor over a database link: about the worst possible use of a cursor you can imagine.  Sadly, the original code had been written by a developer in the company I worked for.If Steve ever starts up the Oracle version of this site, I'm sure that the first thing that will happen will be the experienced Oracle developers bemoaning the prevalent use of cursors in database code.  :-D[/font][/quote]Forget the Oracle version of this site -- I can think of dozens of people who could use this type of mythbusting information that visit this site.  Steve might even be willing to publish an article on it here.  I know about 20 or 30 folks off the top of my Blackberry list who need to know this.  Some developers who come from Oracle backgrounds over to SQL Server carry their bad habits with them.  And a lot of other developers who come from C#, C++, VB, etc., carry their loop-based array ideas over with them.  I think everyone could use better information.</description><pubDate>Sun, 05 Apr 2009 22:06:02 GMT</pubDate><dc:creator>Mike C</dc:creator></item><item><title>RE: T-Sql rant</title><link>http://www.sqlservercentral.com/Forums/Topic675554-8-1.aspx</link><description>[quote][b]Mike C (4/5/2009)[/b][hr][quote][b]steve dassin (4/4/2009)[/b][hr][quote][b]Mike C (4/4/2009)[/b][hr][quote][b]Jeff Moden (4/4/2009)[/b][hr][quote][b]steve dassin (4/4/2009)[/b][hr]C'mon do you really have something against parentheses?[/quote]Actually, yeah. ;-)[/quote]Personally I hate those curly braces. Growl.[/quote]C'mon you got something against the three stooges too? And I'm not asking you to write in Moe and Larry too. But no Curly no tables, no rows and no lists, Want do you want to do manipulate just numbers and strings? :-)[/quote]I always preferred Abbott and Costello.  Even the Marx Brothers.  The Three Stooges never really did it for me, no."But no Curly no tables, no rows and no lists..."  This seems to imply that there's no way to represent tables, rows and "lists" without curly braces.  I can only assume this holds true specifically for whatever it is you're selling?[/quote]My apologies. I certainly didn't mean to imply curlies were the [i]only[/i] way to specify tables and table expressions. Here are some simple examples of Curly and parenthesis in various expression.//Declare table variables (composables).var Abbot:=table            [b]{[/b]                row[b]{[/b]10249 OrderID,51 ProductID,40 Quantity[b]}[/b],               row[b]{[/b]10250,41,10[b]}[/b],               row[b]{[/b]10248,72,5[b]}[/b]            [b]}[/b];var Groucho:=Orders group by [b]{[/b]ShipCountry[b]}[/b] add[b]{[/b]Count[b]([/b][b])[/b] Cnt[b]}[/b]                         where Cnt&amp;lt;10;  var Zeppo:=SQLQuery[b]([/b]"SELECT OrderID,ProductID,Quantity                               FROM [Order Details]"[b])[/b]; //T-sql pass-thru query.select ToTable[b]([/b]'A,B,C'.Split[b]([/b]','[b])[/b][b])[/b];//Convert a delimited string to a list then a table.select ToTable[b]([/b][b]{[/b]'A','B','C'[b]}[/b][b])[/b];     //Convert a declared list to a table.    create view MyView [b]([/b]   [b]([/b]     [b]([/b]Orders where ShipCountry in [b]{[/b]'Norway','Poland'[b]}[/b][b])[/b]       join        OrderDetails    [b])[/b]           [b]{[/b]OrderID,CustomerID,ProductID,ShipCountry,Quantity,Freight[b]}[/b]   [b])[/b]       group by [b]{[/b]CustomerID,ShipCountry} add[b]{[/b]Count() Cnt,Max(Quantity) MaxQty,Max(Freight) MaxFrt[b]}[/b];         adorn[b]{[/b]key[b]{[/b]CustomerID[b]}[/b],key[b]{[/b]ShipCountry[b]}[/b][b]}[/b];select MyView['SANTG' by [b]{[/b]CustomerID[b]}[/b]] //A rowselect table[b]{[/b]MyView['Poland' by [b]{[/b]ShipCountry[b]}[/b]][b]}[/b];//A row converted to a table.I'm not trying to sell you anything. I'm trying to get you to go in for some trippy stuff :-)best,steve[url=http://www.beyondsql.blogspot.com][b]www.beyondsql.blogspot.com[/b][/url]</description><pubDate>Sun, 05 Apr 2009 21:47:18 GMT</pubDate><dc:creator>steve dassin</dc:creator></item><item><title>RE: T-Sql rant</title><link>http://www.sqlservercentral.com/Forums/Topic675554-8-1.aspx</link><description>[font="Verdana"]To be frank, in my experience the issues with cursor-based code in Oracle have been concealed by the huge overkill of hardware assigned to Oracle databases.  The same database on SQL Server would be running on smaller hardware, so issues with poor coding would be more apparent.I think that's likely to be less the case now.  Oracle databases have been flocking to commodity servers (usually Linux based Intel hardware) for years now, and the difference in the hardware base between comparible Oracle and SQL Server solutions has largely disappeared.In my personal experience, I took some code that had been produced by a commercial Oracle development company to refresh a data rollup used for reporting.  It was taking 22 hours to run.  Sure enough, it was written as a cursor within a cursor within a cursor.  I rewrote it as one set-based update and one set-based insert, and saw the time drop to under 20 minutes.I had another example where I got even more of a change in code execution times (19 hours down to 2 minutes), but that was a cursor over a database link: about the worst possible use of a cursor you can imagine.  Sadly, the original code had been written by a developer in the company I worked for.If Steve ever starts up the Oracle version of this site, I'm sure that the first thing that will happen will be the experienced Oracle developers bemoaning the prevalent use of cursors in database code.  :-D[/font]</description><pubDate>Sun, 05 Apr 2009 21:46:12 GMT</pubDate><dc:creator>Bruce W Cassidy</dc:creator></item><item><title>RE: T-Sql rant</title><link>http://www.sqlservercentral.com/Forums/Topic675554-8-1.aspx</link><description>I've heard it from people at various other software companies as well.  It seems to be a very common misconception out there.  Like I said, I haven't done a whole lot with Oracle myself other than converting various Oracle code to SQL Server, but I've seen a lot of cursors and other things that leave me scratching my head sometimes :)</description><pubDate>Sun, 05 Apr 2009 21:30:45 GMT</pubDate><dc:creator>Mike C</dc:creator></item><item><title>RE: T-Sql rant</title><link>http://www.sqlservercentral.com/Forums/Topic675554-8-1.aspx</link><description>[font="Verdana"]I bet you hear that from Oracle developers who have never bothered to performance tune their code or bother to learn how to write set-based code.No.  Oracle does [b]not[/b] have "highly optimised cursors".  In fact, I found the performance of the T-SQL cursors somewhat better than those Oracle has.  Okay, admittedly I haven't touched Oracle since version 10g.  But in versions 7, 8, 9i, 10g...  the cursors suck.  I spent a [b]lot[/b] of time rewriting poorly performing code that was cursor based into set-based code.[/font]</description><pubDate>Sun, 05 Apr 2009 21:24:26 GMT</pubDate><dc:creator>Bruce W Cassidy</dc:creator></item><item><title>RE: T-Sql rant</title><link>http://www.sqlservercentral.com/Forums/Topic675554-8-1.aspx</link><description>[quote][b]Bruce W Cassidy (4/5/2009)[/b][hr][font="Verdana"]It puzzles me as well, and I've commented earlier on that.  "row-by-row" is just as agonising in Oracle as it is in SQL Server.About the only thing I can think of is that Oracle allows you to pass around reference cursors as a way of returning a result set from a stored procedure.  That's about the only acceptable use of cursors in Oracle I can think of.[/font][/quote]One of the things I keep hearing (and I'm no Oracle developer by any means) is that Oracle has very highly optimized cursors.  I don't know if this is true, but it would help explain all the Oracle code I keep running across with cursors on top of cursors.  I also see a lot of other oddities in Oracle code that seem a little odd to me, but apparently provide performance or other benefits on Oracle.</description><pubDate>Sun, 05 Apr 2009 21:02:42 GMT</pubDate><dc:creator>Mike C</dc:creator></item><item><title>RE: T-Sql rant</title><link>http://www.sqlservercentral.com/Forums/Topic675554-8-1.aspx</link><description>[font="Verdana"]It puzzles me as well, and I've commented earlier on that.  "row-by-row" is just as agonising in Oracle as it is in SQL Server.About the only thing I can think of is that Oracle allows you to pass around reference cursors as a way of returning a result set from a stored procedure.  That's about the only acceptable use of cursors in Oracle I can think of.[/font]</description><pubDate>Sun, 05 Apr 2009 14:59:59 GMT</pubDate><dc:creator>Bruce W Cassidy</dc:creator></item><item><title>RE: T-Sql rant</title><link>http://www.sqlservercentral.com/Forums/Topic675554-8-1.aspx</link><description>[quote][b]steve dassin (4/4/2009)[/b][hr][quote][b]Mike C (4/4/2009)[/b][hr][quote][b]Jeff Moden (4/4/2009)[/b][hr][quote][b]steve dassin (4/4/2009)[/b][hr]C'mon do you really have something against parentheses?[/quote]Actually, yeah. ;-)[/quote]Personally I hate those curly braces. Growl.[/quote]C'mon you got something against the three stooges too? And I'm not asking you to write in Moe and Larry too. But no Curly no tables, no rows and no lists, Want do you want to do manipulate just numbers and strings? :-)[/quote]I always preferred Abbott and Costello.  Even the Marx Brothers.  The Three Stooges never really did it for me, no."But no Curly no tables, no rows and no lists..."  This seems to imply that there's no way to represent tables, rows and "lists" without curly braces.  I can only assume this holds true specifically for whatever it is you're selling?</description><pubDate>Sun, 05 Apr 2009 11:47:13 GMT</pubDate><dc:creator>Mike C</dc:creator></item><item><title>RE: T-Sql rant</title><link>http://www.sqlservercentral.com/Forums/Topic675554-8-1.aspx</link><description>[quote][b]Jeff Moden (4/5/2009)[/b][hr][quote][b]steve dassin (4/4/2009)[/b][hr][quote][b]Mike C (4/4/2009)[/b][hr][quote][b]Jeff Moden (4/4/2009)[/b][hr][quote][b]steve dassin (4/4/2009)[/b][hr]C'mon do you really have something against parentheses?[/quote]Actually, yeah. ;-)[/quote]Personally I hate those curly braces. Growl.[/quote]C'mon you got something against the three stooges too? And I'm not asking you to write in Moe and Larry too. But no Curly no tables, no rows and no lists, Want do you want to do manipulate just numbers and strings? :-)[/quote]Didn't say anything about no tables, rows, or lists.  I'm not even against proper use of parenthesis or curly braces but, a good number of languages make them mandatory where they simply don't need to exist.[/quote]I those curly braces because I'm programming C# but it's like breaking your fingers on German keyboard...!</description><pubDate>Sun, 05 Apr 2009 11:01:40 GMT</pubDate><dc:creator>Florian Reischl</dc:creator></item><item><title>RE: T-Sql rant</title><link>http://www.sqlservercentral.com/Forums/Topic675554-8-1.aspx</link><description>[quote][b]steve dassin (4/4/2009)[/b][hr][quote][b]Mike C (4/4/2009)[/b][hr][quote][b]Jeff Moden (4/4/2009)[/b][hr][quote][b]steve dassin (4/4/2009)[/b][hr]C'mon do you really have something against parentheses?[/quote]Actually, yeah. ;-)[/quote]Personally I hate those curly braces. Growl.[/quote]C'mon you got something against the three stooges too? And I'm not asking you to write in Moe and Larry too. But no Curly no tables, no rows and no lists, Want do you want to do manipulate just numbers and strings? :-)[/quote]Didn't say anything about no tables, rows, or lists.  I'm not even against proper use of parenthesis or curly braces but, a good number of languages make them mandatory where they simply don't need to exist.</description><pubDate>Sun, 05 Apr 2009 10:46:18 GMT</pubDate><dc:creator>Jeff Moden</dc:creator></item><item><title>RE: T-Sql rant</title><link>http://www.sqlservercentral.com/Forums/Topic675554-8-1.aspx</link><description>Hi EverybodyI didn't notice this "The Thread" since now. I've read (almost) all posts but I think there are some thinks still not said. Just the most important in, in my opinion. I'll keep it short.[b]Debugging and IntelliSense[/b]Fox, you are absolutely correct! Debugging integration is much better in C#! In SQL Server 2008 the debugging functionality is much better and IntelliSense was introduced. Since now the IntelliSense is helpful but still not as good as in C#. Hope this will be better in SQL Server 2010.[b]UPDATE[/b]This is one of the features I'm really missing in C#! Like (pseudo):[code="csharp"]UPDATE anyList SET ObjectInside.AnyProperty = 1 WHERE ObjectInside.OtherProperty == "Hello World";[/code]Instead of:[code="csharp"]foreach (MyType obj in anyList){   if (obj.OtherProperty == "Hello World")      obj.AnyProperty = 1;}[/code][b]Why T-SQL instead of only C#[/b]Well, the English word for this would be "all-in-one"; in this case I like much more the German "The oviparous wool-milk-pig" - translated literally.I just don't think that SQL is the only [i]other[/i] language you have to handle if you use C#. You wrote that you use XML, what about [b]XPath[/b] or [b]XSLT[/b]. Do you handle huge string operations? What about [b]Reg-Ex[/b]? Do you write Web-Pages? What about [b]HTML[/b] or [b]Java-Script[/b]?As you see there are always thinks which have to be done without C#. ;-)GreetsFlo</description><pubDate>Sun, 05 Apr 2009 03:31:40 GMT</pubDate><dc:creator>Florian Reischl</dc:creator></item><item><title>RE: T-Sql rant</title><link>http://www.sqlservercentral.com/Forums/Topic675554-8-1.aspx</link><description>[quote][b]Mike C (4/4/2009)[/b][hr][quote][b]Jeff Moden (4/4/2009)[/b][hr][quote][b]steve dassin (4/4/2009)[/b][hr]C'mon do you really have something against parentheses?[/quote]Actually, yeah. ;-)[/quote]Personally I hate those curly braces. Growl.[/quote]C'mon you got something against the three stooges too? And I'm not asking you to write in Moe and Larry too. But no Curly no tables, no rows and no lists, Want do you want to do manipulate just numbers and strings? :-)</description><pubDate>Sat, 04 Apr 2009 23:00:59 GMT</pubDate><dc:creator>steve dassin</dc:creator></item><item><title>RE: T-Sql rant</title><link>http://www.sqlservercentral.com/Forums/Topic675554-8-1.aspx</link><description>[quote][b]Jeff Moden (4/4/2009)[/b][hr][quote][b]steve dassin (4/4/2009)[/b][hr]C'mon do you really have something against parentheses?[/quote]Actually, yeah. ;-)[/quote]Has this site lost sight of its basic algebraic senses? :-) I mean all those [i]and[/i]s and [i]or[/i]s in your where statements. Now I'm telling you you can apply the same algebra to tables and table expressions. Your not afraid of coming under the influence, are you? :-)best,steve[url=http://www.beyondsql.blogspot.com][b]www.beyondsql.blogspot.com[/b][/url]</description><pubDate>Sat, 04 Apr 2009 22:50:12 GMT</pubDate><dc:creator>steve dassin</dc:creator></item><item><title>RE: T-Sql rant</title><link>http://www.sqlservercentral.com/Forums/Topic675554-8-1.aspx</link><description>[quote][b]Jeff Moden (4/4/2009)[/b][hr][quote][b]steve dassin (4/4/2009)[/b][hr]C'mon do you really have something against parentheses?[/quote]Actually, yeah. ;-)[/quote]Personally I hate those curly braces. Growl.</description><pubDate>Sat, 04 Apr 2009 21:37:55 GMT</pubDate><dc:creator>Mike C</dc:creator></item><item><title>RE: T-Sql rant</title><link>http://www.sqlservercentral.com/Forums/Topic675554-8-1.aspx</link><description>[quote][b]steve dassin (4/4/2009)[/b][hr]C'mon do you really have something against parentheses?[/quote]Actually, yeah. ;-)</description><pubDate>Sat, 04 Apr 2009 21:33:59 GMT</pubDate><dc:creator>Jeff Moden</dc:creator></item></channel></rss>