[Zope-DB] parameter to force NULL update in dtml-sqltest?

Dieter Maurer dieter@handshake.de
Sun, 22 Dec 2002 19:03:44 +0100


Jeff Kowalczyk wrote at 2002-12-20 14:35 -0500:
 > I need to call a ZSQLMethod from script with parameters that update fields with NULL.
 > The SQL is designed to update any field that is passed with a non-blank parameter, and it
 > works great for that purpose.
 > 
 > I'm using Zope 2.5.1, ZODBCDA/mxODBC, SQL Server 2000, sql-comma patch.
 > 
 > ZSQLMethod sqlUpdateShipment:
 > -----------------------------
 > update Shipments
 > <dtml-sqlgroup set noparens>
 >   <dtml-sqltest ShipperInvoiceID type="nb" op="eq" optional>
 >  <dtml-comma>
 >   <dtml-sqltest ShipperChargeAsBilled type="float" op="eq" optional>
 >  </dtml-sqlgroup>
 > where
 > <dtml-sqltest ShipmentID type="string" op="eq" multiple>
Do not use "sqltest" when you want to assign "NULL" values
(you are abusing "sqltest" inside the "update ... where").
Use:

    ...
    <dtml-sqlgroup set noparens>
      ShipperInvoiceID =
	<dtml-if expr="ShipperInvoideID is None">null
	<dtml-else><dtml-sqlvar ShipperInvoiceID type=string>
	</dtml-if>
    <dtml-comma>
      ...
    </dtml-sqlgroup>
    ...
when you want to assign "null" values.


Dieter