dmcafee at pacbell.net
dmcafee at pacbell.net
Fri Jan 14 00:55:06 CST 2005
It failed in QA (in you first example) because QA doesn't recognize a string enclosed in double quote as text. QA expects single quotes. IF you are passing a text file from VB, VBA, C# or C++ then you must enclose the text in a double quote (unless you are creating the SQL statement in the FE (which technically is a no no, security wise)
I tried this in QA:
DECLARE @SomeDate AS DATETIME
DECLARE @SomeText AS VARCHAR(50)
SET @SomeText = '1/12/2005'
SET @SomeDate = CAST('1/12/2005' AS datetime)
SELECT @someText, @SomeDate, CAST('1/12/2005' AS datetime), CAST(@SomeText AS DATETIME), CONVERT(DATETIME, @SomeText, 101)
and this was my reult:
1/12/2005 2005-01-12 00:00:00.000 2005-01-12 00:00:00.000 2005-01-12 00:00:00.000 2005-01-12 00:00:00.000
-----Original Message-----
From: dba-sqlserver-bounces at databaseadvisors.com
[mailto:dba-sqlserver-bounces at databaseadvisors.com]On Behalf Of Steven
W. Erbach
Sent: Thursday, January 13, 2005 4:08 AM
To: dba-sqlserver at databaseadvisors.com
Subject: RE: [dba-SQLServer] Nulls in sprocs
Francis,
Hmmm, I'm just wondering what the deal is with QA and the fact that it allowed me to use a date string in quotes instead of CAST or CONVERT. "1/12/2005" was rendered in the table as a proper American-style date.
When I used this EXEC command:
EXEC spUpdPosition 115, "This is the Position", 6, NULL, "This is the Description", "Bob", "Frank", CAST('1/12/2005' AS datetime), 660
I got the error: Incorrect syntax near '1/12/2005'. The sproc looks like this:
CREATE PROCEDURE spUpdPosition (@DeptID int,
@Position nvarchar(50),
@Analyst1 int,
@Analyst2 int,
@Description varchar(8000),
@CreatedBy nvarchar(15),
@UpdatedBy nvarchar(15),
@DateUpdated datetime,
@PositionID int)
AS UPDATE tblPositionData
SET DeptID = @DeptID, Position = @Position, Analyst1 = @Analyst1, Analyst2 = @Analyst2, Description = @Description,
CreatedBy = @CreatedBy, UpdatedBy = @UpdatedBy, DateUpdated = @DateUpdated
WHERE (PositionID = @PositionID)
GO
The DateUpdated is a DateTime field, so I can't figure out why the CAST would fail in QA, while feeding the sproc a string for the date would work.
Steve Erbach
Neenah, WI
> ------------Original Message------------
> From: Francis Harvey <HARVEYF1 at westat.com>
> To: "'dba-sqlserver at databaseadvisors.com'" <dba-sqlserver at databaseadvisors.com>
> Date: Wed, Jan-12-2005 10:26 PM
> Subject: RE: [dba-SQLServer] Nulls in sprocs
>
> Steve,
>
> Yes, CONVERT is recommended. The problem is illustrated with your
> 1/12/2005
> date which could be interpreted as January 12th, 2005 or December 1st,
> 2005.
> I assume you are already aware of this since you chose that for your
> example
> date. However, SQL Server will also make obvious data type conversions
> for
> you which is my typical approach towards dealing with this problem
> given my
> US-centric environment.
>
> I can't really guess how you got your exact syntax error message
> without the
> rest of the query, so I'll just point out that string literals should
> be in
> single quotes unless you have set the QUOTED_IDENTIFIER option to OFF.
> Maybe
> this can explain the change in behavior.
>
> Francis R Harvey III
> WB 303, (301)294-3952
> harveyf1 at westat.com