Thread: sql statements

sql statements

From
"David Warren"
Date:
UPDATE table1 SET val1 = 'test', SET val2 = 'test' WHERE recnum=1;
This statement doesn't work for me. If I use only one SET per statement it does. Is this supposed to be this way?
Also, the statement INSERT INTO table1 (val1, val2, ..., val68) VALUES ('test','test',...,'test') gives me an error as well. There are 68 elements I am trying to add in that one statement. If I trim it down to 30 or so it is fine. Is it supposed to be this way? The same statement will load into a MySQL database without any problems at all so I know there are no errors in the statement syntax.
 
 

Re: [SQL] sql statements

From
Tom Lane
Date:
"David Warren" <exec@shreve.net> writes:
> UPDATE table1 SET val1 = 'test', SET val2 = 'test' WHERE recnum=1;
> This statement doesn't work for me. If I use only one SET per statement =
> it does. Is this supposed to be this way?

Yes.  I don't know where you got the idea that the SET keyword should
appear multiple times, but the SQL92 syntax is perfectly clear that
it appears once:
        <update statement: searched> ::=             UPDATE <table name>               SET <set clause list>
  [ WHERE <search condition> ]
 
        <set clause list> ::=             <set clause> [ { <comma> <set clause> }... ]
        <set clause> ::=             <object column> <equals operator> <update source>
        <update source> ::=               <value expression>             | <null specification>             | DEFAULT
        <object column> ::= <column name>

> Also, the statement INSERT INTO table1 (val1, val2, ..., val68) VALUES =
> ('test','test',...,'test') gives me an error as well. There are 68 =
> elements I am trying to add in that one statement. If I trim it down to =
> 30 or so it is fine. Is it supposed to be this way?

How long is the resulting statement?  There's an 8K limit on the length
of the query text in 6.5 and older releases (it's gone in current
sources though).  If you're not hitting that then I dunno... what error
do you get exactly?
        regards, tom lane