Problema con Collation (2008-04-08)

08/04/2008 - 11:27 por Mauricio | Informe spam
Hola a todos,
tengo un store procedure que me devuelve las "ramas" de una tabla
que puede estructurarse tipo árbol. En mi servidor funciona
correctamente pero en un cliente me da un error de collation.
Aquí pongo el sp:
/****** Object: StoredProcedure [dbo].[SubArbolProyectos] Script
Date: 04/07/2008 16:38:10 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SubArbolProyectos]
@IdProyectoRaiz int AS
SET NOCOUNT ON
CREATE TABLE #Proyectos( Nivel smallint, IdProyecto int, NombreProyecto
varchar(50), RutaProyecto varchar(8000),
PRIMARY KEY (Nivel, IdProyecto) ) INSERT INTO #Proyectos(Nivel,
IdProyecto, NombreProyecto, RutaProyecto) SELECT 0, @IdProyectoRaiz,
Nombre, Nombre FROM Proyectos WHERE IdProyecto = @IdProyectoRaiz
DECLARE @Nivel smallint SET @Nivel = 0
HILE 1 = 1
BEGIN
INSERT INTO #Proyectos(Nivel, IdProyecto, NombreProyecto, RutaProyecto)
SELECT @Nivel + 1, P.IdProyecto, P.Nombre, T.RutaProyecto + '\' +
P.Nombre FROM Proyectos P INNER JOIN #Proyectos T ON T.IdProyecto =
P.IdPadre WHERE T.Nivel = @Nivel
IF @@ROWCOUNT = 0
BREAK SET @Nivel = @Nivel + 1
END
SELECT * FROM #Proyectos

El error que le da es este:
Msg 457, Level 16, State 1, Procedure SubArbolProyectos, Line 1
Implicit conversion of varchar value to varchar cannot be performed
because the collation of the value is unresolved due to a collation
conflict.

La tabla Proyectos tiene esta estructura:
CREATE TABLE [dbo].[PROYECTOS](
[IDProyecto] [int] IDENTITY(1,1) NOT NULL,
[Nombre] [varchar](50) NOT NULL,
[Comentario] [varchar](5000) NULL,
[IdPadre] [int] NOT NULL,
[Nivel] [tinyint] NULL,
[IdUsuario] [int] NULL,
[Fecha] [datetime] NULL,
[Mojon] [tinyint] NULL,
CONSTRAINT [PK_PROYECTOS] PRIMARY KEY CLUSTERED
(
[IDProyecto] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY
= OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

Alguien puede decirme qué estoy haciendo mal o dónde está el
problema?
Muchas gracias.

Mauricio
Copenhague, Dinamarca
 

Leer las respuestas

#1 Penta
08/04/2008 - 15:37 | Informe spam
Estimado Mauricio,
El problema se debe a que el Collation no es el mismo en ambas tablas,
puedes cambiar el collation o bien igualarlo en el SP:

SELECT @Nivel + 1, P.IdProyecto, P.Nombre, T.RutaProyecto + '\' +
P.Nombre FROM Proyectos P INNER JOIN #Proyectos T
ON T.IdProyecto collate Modern_Spanish_CI_AS = P.IdPadre collate
Modern_Spanish_CI_AS


Atte.
Penta.

Preguntas similares