10
votes

Pourquoi ce travail SQL ne va-t-il pas fonctionner?

J'ai un nvarchar (50) code> dans une table SQL Server 2000 définie comme suit:

DECLARE @TaskID nvarchar(50)
SET @TaskID = CAST(NEW() AS nvarchar(50))


2 commentaires

Avez-vous et déclenche sur cette table? Vous pouvez obtenir des messages d'erreur de la gâchette. sp_helptrigger 'TaskData'


@Gmastros - Non, le problème était PEBKAC / PIGNICNIC plus communément appelé code 'ID 10T'.


4 Réponses :


4
votes

Veuillez essayer le casting suivant: xxx


0 commentaires

14
votes

Ce script de test fonctionne bien pour moi ... Je ne peux que suggérer que votre Taskid n'est peut-être pas un nvarchar (50) comme vous dites? Essayez un sp_columns juste pour vérifier ...

CREATE Table #TaskData (TaskId NVARCHAR(50))
INSERT INTO #TaskData (TaskId) SELECT CONVERT(NVARCHAR(50), NEWID())
UPDATE #TaskData SET TaskId = CONVERT(NVARCHAR(50), NEWID())
DROP TABLE #TaskData


0 commentaires

0
votes

Utilisez le type de données Varchare, Nvarchar a besoin de double taille


0 commentaires

18
votes

Lorsque vous ne spécifiez pas la taille de votre Varchar / Nvarchar pendant une distribution ou une convertie, il est par défaut de 30 caractères. Vous avez besoin de 36 caractères pour convertir un guide à une chaîne. C'est pourquoi vous obtenez l'erreur.

L'un de ceux-ci fonctionnera: xxx


1 commentaires

Cela me semble être la réponse la plus précise ici.