Ver Mensaje Individual
  #10 (permalink)  
Antiguo 01/03/2013, 21:53
Avatar de junior1920
junior1920
 
Fecha de Ingreso: noviembre-2010
Ubicación: Tumán
Mensajes: 77
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Procedimeinto Almacenado Generar codigo !!!!!!!

Hola ahora estoy intentando hacer este procedimiento almacenado para insertar el campo que se genera codigochar

Tabla:
Código SQL:
Ver original
  1. CREATE TABLE lugar_libreta_topograf(
  2. codlugar INT IDENTITY PRIMARY KEY,
  3. nombre VARCHAR(80),
  4. descrilugar text
  5. );
  6. GO
  7. CREATE TABLE libreta_topograf(
  8. codigo INT IDENTITY PRIMARY KEY,
  9. codigochar VARCHAR(100),/*codigochar as 'Proy'+ right('00000000'+cast(codigo as varchar(12)),6)persisted,*/
  10. descripcion text,
  11. tipo_obra VARCHAR(180),
  12. sector VARCHAR(100) NOT NULL,
  13. anno datetime NOT NULL,
  14. codlugar INT CONSTRAINT fk_codlugar FOREIGN KEY
  15. REFERENCES lugar_libreta_topograf(codlugar)
  16. );
  17. GO

Código SQL:
Ver original
  1. CREATE PROCEDURE insert_dat_lib_topograf
  2.     @ndescripcion text,
  3.     @ntipo_obra VARCHAR(180),
  4.     @nsector VARCHAR(100),
  5.     @ncodlugar INT,
  6.     @nanno datetime,
  7.     @msg AS VARCHAR(100) OUTPUT,
  8.     @Ncodigo AS VARCHAR(10)
  9.  
  10. AS
  11. BEGIN
  12.     SET NOCOUNT ON;
  13.     BEGIN Tran inserta
  14.     BEGIN Try
  15.        
  16.         IF @Ncodigo IS NULL
  17.         BEGIN
  18.         SET @Ncodigo='Proy000001'
  19.         END
  20.  
  21.         SET  @Ncodigo=(SELECT 'Proy'+RIGHT('00000'+CAST(ROW_NUMBER()
  22.                         OVER(Partition BY lt.codlugar,YEAR(lt.anno)
  23.                         ORDER BY lt.codlugar,lt.anno) AS VARCHAR),10) codigochar
  24.                         FROM libreta_topograf lt
  25.                         INNER JOIN lugar_libreta_topograf lu
  26.                         ON lu.codlugar=lt.codlugar)
  27.  
  28.         INSERT INTO libreta_topograf(codigochar,descripcion,
  29.         tipo_obra,sector,anno,codlugar)
  30.         VALUES(@Ncodigo,@ndescripcion,@ntipo_obra,
  31.         @nsector,@nanno,@ncodlugar)
  32.        
  33.         SET @msg = 'Se registro correctamente.'
  34.         COMMIT TRAN inserta
  35.     END try
  36.     BEGIN Catch
  37.         SET @msg = 'Ocurrio un Error: ' + ERROR_MESSAGE() + ' en la línea ' + CONVERT(NVARCHAR(255), ERROR_LINE() ) + '.'
  38.         ROLLBACK TRAN inserta
  39.     END Catch
  40. END
  41. 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