Hola ahora estoy intentando hacer este procedimiento almacenado para insertar el campo que se genera codigochar
Tabla:
Código SQL:
Ver originalCREATE TABLE lugar_libreta_topograf(
codlugar INT IDENTITY PRIMARY KEY,
nombre VARCHAR(80),
descrilugar text
);
GO
CREATE TABLE libreta_topograf(
codigo INT IDENTITY PRIMARY KEY,
codigochar VARCHAR(100),/*codigochar as 'Proy'+ right('00000000'+cast(codigo as varchar(12)),6)persisted,*/
descripcion text,
tipo_obra VARCHAR(180),
sector VARCHAR(100) NOT NULL,
anno datetime NOT NULL,
codlugar INT CONSTRAINT fk_codlugar FOREIGN KEY
REFERENCES lugar_libreta_topograf(codlugar)
);
GO
Código SQL:
Ver originalCREATE PROCEDURE insert_dat_lib_topograf
@ndescripcion text,
@ntipo_obra VARCHAR(180),
@nsector VARCHAR(100),
@ncodlugar INT,
@nanno datetime,
@msg AS VARCHAR(100) OUTPUT,
@Ncodigo AS VARCHAR(10)
AS
BEGIN
SET NOCOUNT ON;
BEGIN Tran inserta
BEGIN Try
IF @Ncodigo IS NULL
BEGIN
SET @Ncodigo='Proy000001'
END
SET @Ncodigo=(SELECT 'Proy'+RIGHT('00000'+CAST(ROW_NUMBER()
OVER(Partition BY lt.codlugar,YEAR(lt.anno)
ORDER BY lt.codlugar,lt.anno) AS VARCHAR),10) codigochar
FROM libreta_topograf lt
INNER JOIN lugar_libreta_topograf lu
ON lu.codlugar=lt.codlugar)
INSERT INTO libreta_topograf(codigochar,descripcion,
tipo_obra,sector,anno,codlugar)
VALUES(@Ncodigo,@ndescripcion,@ntipo_obra,
@nsector,@nanno,@ncodlugar)
SET @msg = 'Se registro correctamente.'
COMMIT TRAN inserta
END try
BEGIN Catch
SET @msg = 'Ocurrio un Error: ' + ERROR_MESSAGE() + ' en la línea ' + CONVERT(NVARCHAR(255), ERROR_LINE() ) + '.'
ROLLBACK TRAN inserta
END Catch
END
GO
Pero me arroja este error:
Error al convertir el tipo de datos varchar a int.
Alguien que me pueda ayudar como levantar ese error