Your solution is equivalent to Case 2 that I listed in my original message. The Microsoft SQL Server JDBC driver complains with a JspException:
javax.servlet.ServletException: javax.servlet.jsp.JspException: INSERT INTO tblTest(a) VALUES (?) : [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]Syntax error converting the nvarchar value 'null' to a column of data type int. However, the JDBC driver accepts and correctly processes the following query: <sql:update> INSERT INTO tblTestDerek VALUES (null) </sql:update> In light of this, I suspect that there may be an error in the implementation of <sql:param> where it treats "null" as a string argument rather than as an SQL null argument. Derek -----Original Message----- From: Kris Schneider [mailto:[EMAIL PROTECTED] Sent: May 18, 2004 9:10 PM To: Tag Libraries Users List Subject: Re: [JSTL] How do I enter a null value with <sql:param>? <sql:param value="${null}"/> Derek Mahar wrote: > How do I enter a null value into a table column with <sql:param>? The > JSTL 1.1 specification states for <sql:param> that, "If value is null, > the parameter is set to the SQL value NULL." However, no matter what > value I pass to <sql:param>, I'm unable to set a null column: > > Case 1: Set value to undefined variable > <sql:update> > INSERT INTO tblTest(a) VALUES (?) > <sql:param value="${nullValue}"/> > </sql:update> > > Output: > javax.servlet.ServletException: javax.servlet.jsp.JspException: > INSERT INTO tblTest(a) VALUES (?) > : [Microsoft][SQLServer 2000 Driver for JDBC]The specified SQL type is > not supported by this driver. > > Case 2: Set value to "null" > <c:set var="nullValue" value="null"/> > <sql:update> > INSERT INTO tblTest(a) VALUES (?) > <sql:param value="${nullValue}"/> > </sql:update> > > Output: > javax.servlet.ServletException: javax.servlet.jsp.JspException: > INSERT INTO tblTest(a) VALUES (?) > : [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]Syntax error > converting the nvarchar value 'null' to a column of data type int. > > Cast 3: Set value to empty string > <c:set var="nullValue" value=""/> > <sql:update> > INSERT INTO tblTest(a) VALUES (?) > <sql:param value="${nullValue}"/> > </sql:update> > > Output: > Microsoft SQL Server inserts a new row with column a set to 0. > > Any suggestions? > > Derek -- Kris Schneider <mailto:[EMAIL PROTECTED]> D.O.Tech <http://www.dotech.com/> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] NOTICE: This email contains privileged and confidential information and is intended only for the individual to whom it is addressed. If you are not the named addressee, you should not disseminate, distribute or copy this e-mail. Please notify the sender immediately by e-mail if you have received this transmission by mistake and delete this communication from your system. E-mail transmission cannot be guaranteed to be secured or error-free as information could be intercepted, corrupted, lost, destroyed, arrive late or incomplete, or contain viruses. AVIS: Le présent courriel contient des renseignements de nature privilégiée et confidentielle et n’est destiné qu'à la personne à qui il est adressé. Si vous n’êtes pas le destinataire prévu, vous êtes par les présentes avisés que toute diffusion, distribution ou reproduction de cette communication est strictement interdite. Si vous avez reçu ce courriel par erreur, veuillez en aviser immédiatement l’expéditeur et le supprimer de votre système. Notez que la transmission de courriel ne peut en aucun cas être considéré comme inviolable ou exempt d’erreur puisque les informations qu’il contient pourraient être interceptés, corrompues, perdues, détruites, arrivées en retard ou incomplètes ou contenir un virus. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]