2010-02-01 7 views
0

Je ne peux pas stocker les variables de type de données de date à l'aide d'une procédure stockée. Mon code est:Procédure stockée SQL Server 2008

ALTER PROCEDURE [dbo].[Access1Register] 
-- Add the parameters for the stored procedure here 
@MobileNumber int, 
@CitizenName varchar(50), 
@Dob char(8), 
@VerificationCode int 
AS 
BEGIN 
-- SET NOCOUNT ON added to prevent extra result sets from 
-- interfering with SELECT statements. 
SET NOCOUNT ON; 

    -- Insert statements for procedure here 
    select CAST(@dob As DATE) 
Insert Into Access1 (MobileNo,CitizenName,Dob,VerificationCode) 
values(@MobileNumber,@CitizenName,@Dob,@VerificationCode) 
go 

Si j'exec cette procédure, il est en cours d'exécution, mais il y a une erreur est survenue dans la variable de type date. Il soulève l'erreur en tant que invalid item '-'.

+1

que ** EXACTEMENT ** est le message d'erreur ?? Et quel genre de valeurs passez-vous dans le paramètre '@ Dob'? –

+1

exécutez-vous éventuellement la base de données dans un mode de compatibilité inférieur? – keithwarren7

Répondre

2

Cela dépend du format de date que vous transmettez.

Si c'est 'mm-dd-yy', vous pouvez utiliser CONVERT(DATE, @Dob, 110), si c'est 'jj-mm-aa' puis CONVERT(DATE, @Dob, 105).

3

Cela dépend de la façon dont vous passez les valeurs @Dob. Le meilleur moyen est d'utiliser le format ISO8601 - 'YYYYMMDD' - car il sera toujours converti en DATE correctement - indépendamment de votre langue et des paramètres régionaux sur votre machine SQL Server.

0

Dans quel format les valeurs @Dob sont-elles transmises? Et quelle erreur obtenez-vous exactement?

Si vous transmettez les valeurs @Dob au format mm-dd-yy, cela devrait fonctionner correctement et aucune erreur ne sera détectée.

Questions connexes