473,594 Members | 2,692 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

MS SQL Server - a plethora of limitations...

Why is it, Microsoft manage to write operating systems and office
applications with every bell and whistle facility known to man. Yet,
even after years and years of development they still cannot produce a
decent version of MS SQL Server, one without a plethora of flaws and
limitations? Personally I'd sack the MS SQL Server Chief Architect,
start addressing some fundementals and do what MS do best - copy the
best functionality of their competitors.

Here's a few reasons why I feel MS SQL Server is still a load of crap,
and will never be many developers RDBMS of choice :

1. Can't use domains in Multi-statement table-valued function table
definition

2. No concept of table.column.da tatype MYTABLE.MYCOLUM N%TYPE for
function / proc parameters, variables. Schema evolution will require
changes to dep functions / procs.

3. Cannot call non extended user defined procedure from within stored
proc - prevents code re-use

4. No create or replace for functions / procs. Changes to procs
require either a change from create to alter, or drop then create

5. Functions must return result on final statement - requires
excessive use of local variables. Why!!!???

6. No user specifiable date format routines - must use convert with
limited options

7. No treewalk mechanism, not easy to traverse hierarchical structure

8. Calling procedures with out parameters require user to also
specifiy which are out params

9. Stored Proc recursion limitations to only 32 nested levels, rather
than monitoring by stack size.

10. No on delete set null referential integrity, this is fundemental
in relational databases, has to be done by trigger. Yuk.

11. No partitioning on db tables

12. Cannot raiseerror in stored functions. No way to inform user of
incorrect parameters etc.

13. No facility for sub - procs / funcs - for localised code
normalisation.

14. No function overloading

15. No concept of grouping similar procs / functions into a collective
package - can mean 1000s of procs rather than a handful of packages.

16. Non standard func / proc calling - proc non parenthesised but,
function defined and called with parenthesis

17. Limited column name length in table variables / Multi-statement
table-valued function table definitions

18. No intersect, minus operators to complement union and union all

19. No exception handling - need I say more about this fundemental
requirement?

20. No handling for select statements using proc parameters passed in
as null e.g.
create procedure sp_test.......
......

select @MyID = ID
from mytable
where parent_id = @parent_id.

If @parent_id is null, select will not return anything even if values
for null parent_id exist.

21 No boolean type for use in stored procs / funcs. SQL standards do
allow booleans (null, FALSE, TRUE)

22 No repeat until - (post predicate loops), while loops can perform
this but one extra check often has to be performed

23 No equivalent to cursor or table %ROWTYPE, when fetching from a
many column cursor, all bind variables have to be declared
individually

24. Declarative Delete cascade in SQL Server is at best rubbish - e.g.
No table can appear more than once in the list of all cascading
referential actions that result from the DELETE or UPDATE. Almost all
other RDBMS I've tried seems to manage it.

Create Table ForKey
(
MyID int not null identity primary key,
MyText varchar(30)
)
go

Create Table Refs
(
SomeID int not null primary key,
RefID1 int not null foreign key references ForKey(MyID) on delete
cascade,
RefID2 int not null foreign key references ForKey(MyID) on delete
cascade
)

Server: Msg 1785, Level 16, State 1, Line 2
Introducing FOREIGN KEY constraint 'FK__Refs__RefI D2__1BFD2C07' on
table 'Refs' may cause cycles or multiple
cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or
modify other FOREIGN KEY constraints.
Server: Msg 1750, Level 16, State 1, Line 2
Could not create constraint. See previous errors.

25. Domains cannot be altered without dropping all dependencies
(stored procs / funcs) even if type isn't changed but say scale and
precision- this is ridiculous. What is the point of domains?

26. No "for loop", while loops can perform this, but resultant code is
not as clear or tidy

27. Can't use CURDATE() inside stored procs / funcs. How crap is
that?

Don't try and make excuses for MS as I have hundreds, anyone else have
any?

Jeager
Jul 20 '05 #1
13 3030
Comments inline.
1. Can't use domains in Multi-statement table-valued function table
definition
User-defined datatypes? That may be addressed in Yukon which has UDTs. (I
know, "jam tomorrow...")
2. No concept of table.column.da tatype MYTABLE.MYCOLUM N%TYPE for
function / proc parameters, variables. Schema evolution will require
changes to dep functions / procs.
True. Although the changes addressed by Oracle's column and row type
functions are surely a fairly small subset of the code maintenance required
when the schema changes.
3. Cannot call non extended user defined procedure from within stored
proc - prevents code re-use
You *can* do that. You can't call SPs from within a UDF and there are good
reasons why not (determinism).
4. No create or replace for functions / procs. Changes to procs
require either a change from create to alter, or drop then create
That would indeed be a nice feature to have.
5. Functions must return result on final statement - requires
excessive use of local variables. Why!!!???
Not sure what this means.
6. No user specifiable date format routines - must use convert with
limited options
You can code your own but converting date strings is really an ETL
function - use DTS or some other tool.
7. No treewalk mechanism, not easy to traverse hierarchical structure
That's not quite correct. There isn't a non-iterative way to expand an
*adjacency list* hierarchy. Other hierarchy models make this easy to do.
CTEs in Yukon will address the limitation relevant to adjacency hierarchies.
8. Calling procedures with out parameters require user to also
specifiy which are out params
Why is that a problem?
10. No on delete set null referential integrity, this is fundemental
in relational databases, has to be done by trigger. Yuk.
I agree that's inconvenient.
11. No partitioning on db tables
Partitioned views are the SQLServer alternative.
12. Cannot raiseerror in stored functions. No way to inform user of
incorrect parameters etc.
True, that's a little annoying.
9. Stored Proc recursion limitations to only 32 nested levels, rather
than monitoring by stack size.

13. No facility for sub - procs / funcs - for localised code
normalisation.

14. No function overloading

15. No concept of grouping similar procs / functions into a collective
package - can mean 1000s of procs rather than a handful of packages.

16. Non standard func / proc calling - proc non parenthesised but,
function defined and called with parenthesis 26. No "for loop", while loops can perform this, but resultant code is
not as clear or tidy
Transact SQL isn't intended to be a fully featured programming language.
..Net is Microsoft's development platform. Keep basic data manipulation in
the database, more complex logic in the middle tier.
17. Limited column name length in table variables / Multi-statement
table-valued function table definitions
Do you know of a database or language that allows identifiers of *un*limited
length? The maximum length is 128 characters. Surely enough for most people!
18. No intersect, minus operators to complement union and union all
True. Although this is trivial to code yourself.
19. No exception handling - need I say more about this fundemental
requirement?
Error handling is improved in Yukon but yes it's a pain.
20. No handling for select statements using proc parameters passed in
as null e.g.
create procedure sp_test.......
.....

select @MyID = ID
from mytable
where parent_id = @parent_id.

If @parent_id is null, select will not return anything even if values
for null parent_id exist.
That's just ANSI Standard handling of NULLs. Use IS NULL.
21 No boolean type for use in stored procs / funcs. SQL standards do
allow booleans (null, FALSE, TRUE)
No, but you can return "T" or "F" or something else instead. Why is that a
limitation? It's still just a single scalar value.
22 No repeat until - (post predicate loops), while loops can perform
this but one extra check often has to be performed
Yes.
23 No equivalent to cursor or table %ROWTYPE, when fetching from a
many column cursor, all bind variables have to be declared
individually
How often do you use cursors? I don't think I've ever written one except for
some administrative processes.
24. Declarative Delete cascade in SQL Server is at best rubbish - e.g.
No table can appear more than once in the list of all cascading
This is a significant limitation, yes.
25. ... What is the point of domains?
You said it. Personally, I never use user-defined datatypes.
27. Can't use CURDATE() inside stored procs / funcs. How crap is
that?
You can use CURRENT_TIMESTA MP, GETDATE() in procs but not in functions. See
my answer to 3.
Don't try and make excuses for MS as I have hundreds, anyone else have
any?


Lots. But if it bothers you why not use another product?

--
David Portas
SQL Server MVP
--
Jul 20 '05 #2
Comments inline.
1. Can't use domains in Multi-statement table-valued function table
definition
User-defined datatypes? That may be addressed in Yukon which has UDTs. (I
know, "jam tomorrow...")
2. No concept of table.column.da tatype MYTABLE.MYCOLUM N%TYPE for
function / proc parameters, variables. Schema evolution will require
changes to dep functions / procs.
True. Although the changes addressed by Oracle's column and row type
functions are surely a fairly small subset of the code maintenance required
when the schema changes.
3. Cannot call non extended user defined procedure from within stored
proc - prevents code re-use
You *can* do that. You can't call SPs from within a UDF and there are good
reasons why not (determinism).
4. No create or replace for functions / procs. Changes to procs
require either a change from create to alter, or drop then create
That would indeed be a nice feature to have.
5. Functions must return result on final statement - requires
excessive use of local variables. Why!!!???
Not sure what this means.
6. No user specifiable date format routines - must use convert with
limited options
You can code your own but converting date strings is really an ETL
function - use DTS or some other tool.
7. No treewalk mechanism, not easy to traverse hierarchical structure
That's not quite correct. There isn't a non-iterative way to expand an
*adjacency list* hierarchy. Other hierarchy models make this easy to do.
CTEs in Yukon will address the limitation relevant to adjacency hierarchies.
8. Calling procedures with out parameters require user to also
specifiy which are out params
Why is that a problem?
10. No on delete set null referential integrity, this is fundemental
in relational databases, has to be done by trigger. Yuk.
I agree that's inconvenient.
11. No partitioning on db tables
Partitioned views are the SQLServer alternative.
12. Cannot raiseerror in stored functions. No way to inform user of
incorrect parameters etc.
True, that's a little annoying.
9. Stored Proc recursion limitations to only 32 nested levels, rather
than monitoring by stack size.

13. No facility for sub - procs / funcs - for localised code
normalisation.

14. No function overloading

15. No concept of grouping similar procs / functions into a collective
package - can mean 1000s of procs rather than a handful of packages.

16. Non standard func / proc calling - proc non parenthesised but,
function defined and called with parenthesis 26. No "for loop", while loops can perform this, but resultant code is
not as clear or tidy
Transact SQL isn't intended to be a fully featured programming language.
..Net is Microsoft's development platform. Keep basic data manipulation in
the database, more complex logic in the middle tier.
17. Limited column name length in table variables / Multi-statement
table-valued function table definitions
Do you know of a database or language that allows identifiers of *un*limited
length? The maximum length is 128 characters. Surely enough for most people!
18. No intersect, minus operators to complement union and union all
True. Although this is trivial to code yourself.
19. No exception handling - need I say more about this fundemental
requirement?
Error handling is improved in Yukon but yes it's a pain.
20. No handling for select statements using proc parameters passed in
as null e.g.
create procedure sp_test.......
.....

select @MyID = ID
from mytable
where parent_id = @parent_id.

If @parent_id is null, select will not return anything even if values
for null parent_id exist.
That's just ANSI Standard handling of NULLs. Use IS NULL.
21 No boolean type for use in stored procs / funcs. SQL standards do
allow booleans (null, FALSE, TRUE)
No, but you can return "T" or "F" or something else instead. Why is that a
limitation? It's still just a single scalar value.
22 No repeat until - (post predicate loops), while loops can perform
this but one extra check often has to be performed
Yes.
23 No equivalent to cursor or table %ROWTYPE, when fetching from a
many column cursor, all bind variables have to be declared
individually
How often do you use cursors? I don't think I've ever written one except for
some administrative processes.
24. Declarative Delete cascade in SQL Server is at best rubbish - e.g.
No table can appear more than once in the list of all cascading
This is a significant limitation, yes.
25. ... What is the point of domains?
You said it. Personally, I never use user-defined datatypes.
27. Can't use CURDATE() inside stored procs / funcs. How crap is
that?
You can use CURRENT_TIMESTA MP, GETDATE() in procs but not in functions. See
my answer to 3.
Don't try and make excuses for MS as I have hundreds, anyone else have
any?


Lots. But if it bothers you why not use another product?

--
David Portas
SQL Server MVP
--
Jul 20 '05 #3
Jeager (Je****@nowhere .com) writes:
Why is it, Microsoft manage to write operating systems and office
applications with every bell and whistle facility known to man. Yet,
even after years and years of development they still cannot produce a
decent version of MS SQL Server, one without a plethora of flaws and
limitations? Personally I'd sack the MS SQL Server Chief Architect,
start addressing some fundementals and do what MS do best - copy the
best functionality of their competitors.

Here's a few reasons why I feel MS SQL Server is still a load of crap,
and will never be many developers RDBMS of choice :
Some of the issues you raise are certainly weaknesses in SQL Server of
some significance. Some of them are addressed in the next version of
SQL Server, but not all.

However, other issues you raise, do in no way warrant your yelling
and shouting. Maybe you have a favourite DBMS which supports all this,
but I doubt. And that DBMS is such case likely to be without features
that SQL Server has.
1. Can't use domains in Multi-statement table-valued function table
definition
You can't use domains anywhere, because SQL Server does not have the
concept. But if you mean user-defined datatypes, this is somewhat stupid
limitation.
2. No concept of table.column.da tatype MYTABLE.MYCOLUM N%TYPE for
function / proc parameters, variables. Schema evolution will require
changes to dep functions / procs.
Would be nice, yes, but a serious restriction? No.
3. Cannot call non extended user defined procedure from within stored
proc - prevents code re-use
Wrong. But you are probably thinking of calling an SP from a function.
It appears that you have not understood the concept of a function. When
MS introduced functions, they took a very conservative approach and
decided that a function may not change the state of the database. Of
course, they could have been more lax, but that would also have reduced
where you can use a function. Say that you have:

SELECT ...
FROM tbl
JOIN some_fuction() ON ..

Now, if some_function changes data in tbl, you could different results
depending in which order the optimizer accesses the table. Do you think
that would be a good thing?
4. No create or replace for functions / procs. Changes to procs
require either a change from create to alter, or drop then create
No big deal. See http://www.abaris.se/abaperls which takes care of this
problem entirely. (And which also address the first issue on the list.)
5. Functions must return result on final statement - requires
excessive use of local variables. Why!!!???
Come on, you call this a serious issue.
6. No user specifiable date format routines - must use convert with
limited options
Then again, it's better to return as date to the client. The server
cannot now which the preferences of the end user are.
8. Calling procedures with out parameters require user to also
specifiy which are out params
Funky. Part of the Sybase legacy.
9. Stored Proc recursion limitations to only 32 nested levels, rather
than monitoring by stack size.
Probably a good thing. The only times when I have dug this deep was
then I shouldn't have.
10. No on delete set null referential integrity, this is fundemental
in relational databases, has to be done by trigger. Yuk.
Fundamental?
11. No partitioning on db tables
You can use partitioned views. Partition tables are in Yukon.
12. Cannot raiseerror in stored functions. No way to inform user of
incorrect parameters etc.
Given that SQL Server does not handle errors raised in functions well
at all, this is probably a good thing. :-)
14. No function overloading
And you are calling that a serious restriction? Well, in Yukon you will
be able to program in .Net languages, so there you be able to overload
to your hears content.
15. No concept of grouping similar procs / functions into a collective
package - can mean 1000s of procs rather than a handful of packages.
Again, that is nothing that warrants the tone of your post.
16. Non standard func / proc calling - proc non parenthesised but,
function defined and called with parenthesis
Irritating, but it's not the end of the world.
17. Limited column name length in table variables / Multi-statement
table-valued function table definitions
Isn't 128 chars enough for you?
18. No intersect, minus operators to complement union and union all
Yes, this is missing, and no signs of being added either.
19. No exception handling - need I say more about this fundemental
requirement?
Error handling in SQL2000 is really poor. Yukon changes the scene
radically.
20. No handling for select statements using proc parameters passed in
as null e.g.
create procedure sp_test.......
.....

select @MyID = ID
from mytable
where parent_id = @parent_id.

If @parent_id is null, select will not return anything even if values
for null parent_id exist.
Wrong. If you want this behaviour, you can use SET ANSI_NULLS OFF. But
I definitely to not encourage it.
21 No boolean type for use in stored procs / funcs. SQL standards do
allow booleans (null, FALSE, TRUE)
There is bit. Works for me.
22 No repeat until - (post predicate loops), while loops can perform
this but one extra check often has to be performed
If you want a language with good control structure, try a traditional
one. You will even be able to use them in SQL Server in Yukon.
23 No equivalent to cursor or table %ROWTYPE, when fetching from a
many column cursor, all bind variables have to be declared
individually
Big deal. Cursors are best avoided anyway.
25. Domains cannot be altered without dropping all dependencies
(stored procs / funcs) even if type isn't changed but say scale and
precision- this is ridiculous. What is the point of domains?
To alter them each and every day? I seriously doubt. Actually, this
is the sort of feature I don't know if I want to see. You have this
user-defined data type (still no domains in SQL Server), which is
decimal(8,2), and which is used in 15 big tables. Now you decide
to change the type decimal(14,2). Since you now make the type bigger,
SQL Server has to rebuild all tables. In one single transaction.
27. Can't use CURDATE() inside stored procs / funcs. How crap is
that?


Probably you mean getdate(), which you can use in stored procedures.
You cannot use it functions, because when a function is called repeatedly
in a query, the result should be the save for any given input parameter
at time during the query.
--
Erland Sommarskog, SQL Server MVP, es****@sommarsk og.se

Books Online for SQL Server SP3 at
http://www.microsoft.com/sql/techinf...2000/books.asp
Jul 20 '05 #4

Well guy I am a french SQL expert and recently became a MVP...

I now pretty well ISO standard SQL Language.

The state of art in the normative process is actually SQL:1992.
SQL:1999 wich has got relational object feature is not yet a ISO standard...

Let me say that, SQL Server is the RDBMS closest to the standard !

Do you know RDBMS wich allows database object names to be long to 128 chars ?
Do you know RDBMS wich use INFORMATION_SCH EMA views to meta data the data base ?
Do you know RDBMS wich use COALESCE and NULLIF function ?
Do you know RDBMS wich have the two structured CASE ?
Do you know RDBMS wich allow you to subqueries in the FROM clause of a SELECT ?
....

The thing you want will be a mix of Java, C, Excel, Ada but not a RDBMS !

Jeager a écrit:
Why is it, Microsoft manage to write operating systems and office
applications with every bell and whistle facility known to man. Yet,
even after years and years of development they still cannot produce a
decent version of MS SQL Server, one without a plethora of flaws and
limitations? Personally I'd sack the MS SQL Server Chief Architect,
start addressing some fundementals and do what MS do best - copy the
best functionality of their competitors.

Here's a few reasons why I feel MS SQL Server is still a load of crap,
and will never be many developers RDBMS of choice :

1. Can't use domains in Multi-statement table-valued function table
definition
DOMAINs can be simulated by a combination of rules and UserType.

2. No concept of table.column.da tatype MYTABLE.MYCOLUM N%TYPE for
function / proc parameters, variables. Schema evolution will require
changes to dep functions / procs.
Not OK for that ! We are not in a Ada ou C++ dev !

3. Cannot call non extended user defined procedure from within stored
proc - prevents code re-use

4. No create or replace for functions / procs. Changes to procs
require either a change from create to alter, or drop then create
Don't you use a tool ? Don't you use the script auto create of Enterprise Manager to get the SQL equivalent code ???

5. Functions must return result on final statement - requires
excessive use of local variables. Why!!!???
This does not appear to be so stupid !
6. No user specifiable date format routines - must use convert with
limited options
Wrong... use SET DATEFORMAT.

7. No treewalk mechanism, not easy to traverse hierarchical structure
Don't need. Every recursive process can be write without recursive code by use of a "pile" structure.
For instance, trees in SQL can be modelate by intervals.
Read me for that : http://sqlpro.developpez.com/Tree/SQL_tree.html

8. Calling procedures with out parameters require user to also
specifiy which are out params
Is it really a problem ?
9. Stored Proc recursion limitations to only 32 nested levels, rather
than monitoring by stack size.
Recursion processes in RDBMS should never exists. See answer 7.

10. No on delete set null referential integrity, this is fundemental
in relational databases, has to be done by trigger. Yuk.
This is really a point !

11. No partitioning on db table
Manually !
12. Cannot raiseerror in stored functions. No way to inform user of
incorrect parameters etc.
Yes this is the second point, the error manager of SQL Server must be improve !
13. No facility for sub - procs / funcs - for localised code
normalisation.

14. No function overloading
SQL is not an OO language and must not be one ! The future of the standard does not goes in this way !
15. No concept of grouping similar procs / functions into a collective
package - can mean 1000s of procs rather than a handful of packages.
Yes, but with a use of a 128 char name, you can group by prefix ! This is not the cas in Oracle wich cannot accept more
than 28 chars... And the real interest of package for this "poor" naming object database !
16. Non standard func / proc calling - proc non parenthesised but,
function defined and called with parenthesis
The weight of the past... Procs was developped before the standard came, functions, after the standard and close to the
standar ...
17. Limited column name length in table variables / Multi-statement
table-valued function table definitions
128 characters is not enough for you ? This is the SQL:1992 standard !

18. No intersect, minus operators to complement union and union all
Wich can be represented by two equivalents... But I agree, I would prefer they exists !
19. No exception handling - need I say more about this fundemental
requirement?
"déjà dit"
20. No handling for select statements using proc parameters passed in
as null e.g.
create procedure sp_test.......
.....

select @MyID = ID
from mytable
where parent_id = @parent_id.

If @parent_id is null, select will not return anything even if values
for null parent_id exist.
depend on the parameters fixed for normative NULL treatment

21 No boolean type for use in stored procs / funcs. SQL standards do
allow booleans (null, FALSE, TRUE)
Wrong, the type is BIT, wich allow 1, 0, NULL. SQL does not have any standard about boolean. This is planed in SQL:199
wich is not yet a ISO standard !

22 No repeat until - (post predicate loops), while loops can perform
this but one extra check often has to be performed
not really a problem WHILE is a general loop that can replace all.
23 No equivalent to cursor or table %ROWTYPE, when fetching from a
many column cursor, all bind variables have to be declared
individually
A lack, I agree

24. Declarative Delete cascade in SQL Server is at best rubbish - e.g.
No table can appear more than once in the list of all cascading
referential actions that result from the DELETE or UPDATE. Almost all
other RDBMS I've tried seems to manage it.
The use of CASCADED delete or update is always a performance problem. This limitation has a good intention... The use of
a trigger is better !
Create Table ForKey
(
MyID int not null identity primary key,
MyText varchar(30)
)
go

Create Table Refs
(
SomeID int not null primary key,
RefID1 int not null foreign key references ForKey(MyID) on delete
cascade,
RefID2 int not null foreign key references ForKey(MyID) on delete
cascade
)

Server: Msg 1785, Level 16, State 1, Line 2
Introducing FOREIGN KEY constraint 'FK__Refs__RefI D2__1BFD2C07' on
table 'Refs' may cause cycles or multiple
cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or
modify other FOREIGN KEY constraints.
Server: Msg 1750, Level 16, State 1, Line 2
Could not create constraint. See previous errors.

25. Domains cannot be altered without dropping all dependencies
(stored procs / funcs) even if type isn't changed but say scale and
precision- this is ridiculous. What is the point of domains?
26. No "for loop", while loops can perform this, but resultant code is
not as clear or tidy
Redondant with 22
27. Can't use CURDATE() inside stored procs / funcs. How crap is
that?
In Stored Proc Yes, In Function not. Because of DETERMINISTIC limitation.
You can use a view instaed :

CREATE VIEW GIVE_ME_CURRENT _DATETIME
AS
SELECT CURRENT_TIMESTA MP AS DT

CREATE FUNCTION dbo.FN_GETDATET IME
RETURNS DATETIME
BEGIN
RETURN (SELECT DT FROM GIVE_ME_CURRENT _DATETIME)
END

By the way, CURRENT_TIMESTA MP is the SQL:1992 standard of datetime function !

Don't try and make excuses for MS as I have hundreds, anyone else have
any?
For me the most important lack is the deferability of constraint...
wich is a SQL:1992 standard

One important point, wich is not a SQL standard, but planned for SQL:1999 is that SQL Server does not allow BEFORE trigger.

And some point I will be enjoy to have is :
ROW VALUE CONSTRUCTOR
MATCH predicate
and some other standard stuff like EXTRACT, OVERLAPS and INTERVAL data type (time process)

Jeager


--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
*************** ********* www.datasapiens.com *************** **********

Jul 20 '05 #5
Fred BROUARD - SQLpro (br******@club-internet.fr) writes:
Let me say that, SQL Server is the RDBMS closest to the standard !


Hey, would you expect anyone who thinks that NULL should be equal to
NULL would care about standards?

(Sorry, could not resist.)
--
Erland Sommarskog, SQL Server MVP, es****@sommarsk og.se

Books Online for SQL Server SP3 at
http://www.microsoft.com/sql/techinf...2000/books.asp
Jul 20 '05 #6
Fred BROUARD - SQLpro wrote:

Well guy I am a french SQL expert and recently became a MVP...

I now pretty well ISO standard SQL Language.

The state of art in the normative process is actually SQL:1992.
SQL:1999 wich has got relational object feature is not yet a ISO
standard...
Let me say that, SQL Server is the RDBMS closest to the standard !

I like that French humour of yours :-)
SQL:1999 is outdated itself, btw.

Cheers
Serge
--
Serge Rielau
DB2 SQL Compiler Development
IBM Toronto Lab
Jul 20 '05 #7
-P-
"Fred BROUARD - SQLpro" <br******@clu b-internet.fr> wrote in message
news:40******** *************@n ews.club-internet.fr...

Well guy I am a french SQL expert and recently became a MVP...

I now pretty well ISO standard SQL Language.

The state of art in the normative process is actually SQL:1992.
SQL:1999 wich has got relational object feature is not yet a ISO standard...

Let me say that, SQL Server is the RDBMS closest to the standard !

Do you know RDBMS wich allows database object names to be long to 128 chars ?
Do you know RDBMS wich use INFORMATION_SCH EMA views to meta data the data base ?
Do you know RDBMS wich use COALESCE and NULLIF function ?
Do you know RDBMS wich have the two structured CASE ?
Do you know RDBMS wich allow you to subqueries in the FROM clause of a SELECT ?
...

Adaptive Server Anywhere from Sybase's iAnywhere group has all those features except INFORMATION_SCH EMA. I believe
that's planned for their next release - v10.0.

--
Paul Horan
Sr. Architect
VCI Springfield, Mass
www.vcisolutions.com

Jul 20 '05 #8
Erland Sommarskog wrote:
Fred BROUARD - SQLpro (br******@club-internet.fr) writes:
Let me say that, SQL Server is the RDBMS closest to the standard !

Hey, would you expect anyone who thinks that NULL should be equal to
NULL would care about standards?

(Sorry, could not resist.)


I think that NULL is used for three separate concepts, unknown,
absent and not applicable (would turn up in queries, due to outer
joins). Absent should be equal to absent, unknown should *not*
be equal to unknown, and I'm not really sure about not applicable.
To do all that, though, one kind of Null isn't enough. I blame
SQL for this, however, not MS SQL.

Bill

Jul 20 '05 #9
Jeager wrote:
Why is it, Microsoft manage to write operating systems and office
applications with every bell and whistle facility known to man. Yet,
even after years and years of development they still cannot produce a
decent version of MS SQL Server, one without a plethora of flaws and
limitations? Personally I'd sack the MS SQL Server Chief Architect,
start addressing some fundementals and do what MS do best - copy the
best functionality of their competitors.
2. No concept of table.column.da tatype MYTABLE.MYCOLUM N%TYPE for
function / proc parameters, variables. Schema evolution will require
changes to dep functions / procs.
Do you mean that you can't use variables for database objects (this
really bugs me)? If not, I have no idea what you're saying here.
21 No boolean type for use in stored procs / funcs. SQL standards do
allow booleans (null, FALSE, TRUE)

What about boolean types for use within queries? Personally, I'm sick
of writing "Case When Field1 = Field2 Then 1 Else 0 End As Equals". It
should just be "(Field1 = Field2) As Equals".

Bill

Jul 20 '05 #10

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

16
22459
by: Michael Walton | last post by:
I am trying to write some code that inserts or updates a text field in my SQL Server 2000 database. The SQL statement is created using a submit from a form, and the text is coming from a <textarea>, and therefore being placed into the SQL statement via a Request("field"). However, due to limitations in SQL Server 2000 and text fields, I can not use a simple Update or Insert command with text over 8000 bytes. Does anybody have any...
5
3490
by: Robin Tucker | last post by:
I'm looking for a simple way of telling (inside a stored procedure) if I'm currently using MSDE or a full SQL server. Ideally, there is some pre-defined environment variable that won't cause me too much overhead. The reason I'm doing this is because my system "rolls over" databases when it reaches the 2Gb limit with MSDE, but obviously I want to avoid this overhead if the user installs onto a full SQL server instance. Thanks
4
1951
by: Norton | last post by:
Hi all, I would like to retrieve mail from a mail server (Exchange Server 5.5), do some operations and then delete email. I have try using Outlook to retrieve mail items, it works but extremely slow (as my mail box is very very large, around 10000 mails need to process per day) Any suggestions?
1
1553
by: Paul H | last post by:
I have never used the MSDE as a backend for a database but I am considering dipping my foot in the SQL waters and trying out SQL Server Express. I remember that the MSDE had certain limitations (limited users?) that stopped me from using it. Does SQL Server Express have similar limitations that would deter me from using it as a backend and maybe eventually getting my head around Visual Studio Express with a view to moving away from Access...
2
6942
by: Jobs | last post by:
Download the JAVA , .NET and SQL Server interview with answers Download the JAVA , .NET and SQL Server interview sheet and rate yourself. This will help you judge yourself are you really worth of attending interviews. If you own a company best way to judge if the candidate is worth of it. http://www.questpond.com/InterviewRatingSheet.zip
2
2085
by: kress1963nov22 | last post by:
I recently purchased a good MS book ("Build a Web Site Now") by Jim Buyens. It has the Express Edition of MS-Visual Web Developer 2005 on CD and also MS SQL Server 2005 Express Edition on the CD. A couple of questions for this newbie: Can MS SQL Server 2005 Express Edition be used in place of the older MSDE product for backend database work? I also have Visual Studio .NET (VB) 2003 (Standard Edition). How compatible are all these products...
13
1882
by: José Joye | last post by:
Hello, What is the best way to stop a remoting server (Singleton SAO) that has been started with RemotingConfiguration.Configure(). For sure, I want to do this without quitting the application :-) In fact, at a given time based on an internal event, I would like to stop the remoting functionality within my process. Many thanks,
6
1781
by: musicloverlch | last post by:
I've been told by my IT people to set up a connection to the SQL Server using OLE instead of ODBC. Apparently it is faster. I have no idea how to even begin. Does anyone have an example of setting up this connection on the fly? I will be distributing the database to about 20 people and really don't want to do it manually on each PC. I have the syntax to use for a trusted connection ""Provider=SQLOLEDB;Data...
0
7880
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
8255
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
0
8374
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
0
6665
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
1
5739
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
3903
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
2389
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
1
1486
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
0
1217
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.