Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

[SOLUCIONADO] ERROR EN SP - Conversion failed when converting the nvarchar value

Estas en el tema de ERROR EN SP - Conversion failed when converting the nvarchar value en el foro de SQL Server en Foros del Web. Estimada Gente del Foro, Con una inquietud generada al ejecutar un Store Procedure sobre una Tabla: Solo tomaré 3 campos de la tabla para no ...
  #1 (permalink)  
Antiguo 19/02/2015, 19:33
 
Fecha de Ingreso: abril-2008
Mensajes: 112
Antigüedad: 16 años
Puntos: 0
ERROR EN SP - Conversion failed when converting the nvarchar value

Estimada Gente del Foro,

Con una inquietud generada al ejecutar un Store Procedure sobre una Tabla:
Solo tomaré 3 campos de la tabla para no hacer muy larga la explicacion:

Código SQL:
Ver original
  1. CREATE TABLE [dbo].[INGRESOLOTEMP_100](
  2.     [CLIENTE_CODIGO] [SMALLINT] NOT NULL,
  3.     [CAJA_CODIGO] [nvarchar](20) NULL,
  4.     [CAJA_NUMERO] [SMALLINT] NOT NULL,
  5. )
El SP tiene que ingresar datos en esta tabla, por lo tanto tengo lo siguiente:

Código SQL:
Ver original
  1. ALTER PROCEDURE [dbo].[SP_LOT_INSERTLOTEMP]
  2.     @IDENT_TABLA NVARCHAR(10),
  3.     @CLIENTE_CODIGO SMALLINT,
  4.     @CAJA_CODIGO NVARCHAR(15),
  5.     @CAJA_NUMERO SMALLINT
  6.  
  7. AS
  8.     DECLARE @NOMBRE_TABLA NVARCHAR(40)
  9.         SELECT @NOMBRE_TABLA = 'INGRESOLOTEMP_' + @IDENT_TABLA
  10.  
  11.     DECLARE @SQL NVARCHAR(MAX)
  12.        SET @SQL = 'INSERT into dbo.' + quotename(@NOMBRE_TABLA) +           '(CLIENTE_CODIGO, CAJA_CODIGO, CAJA_NUMERO) VALUES ('
  13.     + @CLIENTE_CODIGO + CONVERT(VARCHAR, @CAJA_CODIGO) + @CAJA_NUMERO + ''')'
  14.     EXEC sp_executesql @SQL

Me produce un error al ejecutarlo:
Código SQL:
Ver original
  1. Conversion failed WHEN converting the nvarchar VALUE 'INSERT into dbo.[INGRESOLOTEMP_100](CLIENTE_CODIGO, CAJA_CODIGO, CAJA_NUMERO) VALUES (' TO DATA TYPE SMALLINT.

Por que no lo ejecuto de manera mas sencilla o convencional?
pues por que esa tabla se crea en un SP previamente ejecutado (ahi ejecuto un SP y me crea la tabla sin problemas). El nombre de la tabla depende del usuario logueado en el sistema, es por eso que el nombre de la tabla se forma asi:
SELECT @NOMBRE_TABLA = 'INGRESOLOTEMP_' + @IDENT_TABLA

Porque el @IDENT_TABLA es dado por el usuario automaticamente al ingresar a esa parte del sistema.

Es la 1ra vez que ejecuto un SP de esta manera y no logro determinar cual es el problema con las conversiones del formato, si alguien por favor podría darme una sugerencia le estaria muy agradecido.

Saludos.

Última edición por gnzsoloyo; 20/02/2015 a las 10:51
  #2 (permalink)  
Antiguo 20/02/2015, 08:27
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: ERROR EN SP - Conversion failed when converting the nvarchar value

sencillo, los valores enteros necesitan tener un convert a varchar en este caso quedaria algo como esto:

Código SQL:
Ver original
  1. DECLARE @SQL NVARCHAR(MAX)
  2.        SET @SQL = 'INSERT into dbo.' + quotename(@NOMBRE_TABLA) +           '(CLIENTE_CODIGO, CAJA_CODIGO, CAJA_NUMERO) VALUES ('
  3.     + CONVERT(VARCHAR(20),@CLIENTE_CODIGO )+ CONVERT(VARCHAR, @CAJA_CODIGO) + CONVERT(VARCHAR(20),@CAJA_NUMERO) + ''')'
  4.     EXEC sp_executesql @SQL

aqui la pregunta, porque en unos si tienes el convert y en otros no????
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 20/02/2015, 10:48
 
Fecha de Ingreso: abril-2008
Mensajes: 112
Antigüedad: 16 años
Puntos: 0
Respuesta: ERROR EN SP - Conversion failed when converting the nvarchar value

Libras.
Gracias por responder,

Lo revisé pero aun no lo tengo muy claro. El porque no agregue el convert a todos, bueno es la primera vez que creo un SP de esta manera y como los campos de la tabla donde se insertaran son de tipo nvarchar y smallint entonces solo converti el dato que es de tipo nvarchar, no pensé que se debía componer todos.

Una pregunta:
dentro de esta linea no debería colocar separaciones con comas?
Código SQL:
Ver original
  1. CONVERT(VARCHAR(20),@CLIENTE_CODIGO )+ CONVERT(VARCHAR, @CAJA_CODIGO)
  2. + CONVERT(VARCHAR(20),@CAJA_NUMERO)

por que son los valores a insertar: Values(value1, value2, value3 ....)
Quedando algo asi?
Código SQL:
Ver original
  1. CONVERT(VARCHAR(20),@CLIENTE_CODIGO )+ ', ' + CONVERT(VARCHAR,
  2. @CAJA_CODIGO) + ', ' + CONVERT(VARCHAR(20),@CAJA_NUMERO)
Porque yo lo he probado de varias maneras y sigo sin tener buen resultado.

Saludos
  #4 (permalink)  
Antiguo 20/02/2015, 10:58
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: ERROR EN SP - Conversion failed when converting the nvarchar value

Código SQL:
Ver original
  1. CREATE TABLE [dbo].[INGRESOLOTEMP_100](
  2.     [CLIENTE_CODIGO] [SMALLINT] NOT NULL,
  3.     [CAJA_CODIGO] [nvarchar](20) NULL,
  4.     [CAJA_NUMERO] [SMALLINT] NOT NULL,
  5. )
  6.  
  7.  
  8.  
  9.  
  10.  
  11. ALTER PROCEDURE [dbo].[SP_LOT_INSERTLOTEMP]
  12.     @IDENT_TABLA NVARCHAR(10),
  13.     @CLIENTE_CODIGO SMALLINT,
  14.     @CAJA_CODIGO NVARCHAR(15),
  15.     @CAJA_NUMERO SMALLINT
  16.  
  17. AS
  18.     DECLARE @NOMBRE_TABLA NVARCHAR(40)
  19.         SELECT @NOMBRE_TABLA = 'INGRESOLOTEMP_' + CONVERT(VARCHAR(100),@IDENT_TABLA)
  20.  
  21.     DECLARE @SQL NVARCHAR(MAX)
  22.        SET @SQL = 'INSERT into dbo.' + quotename(@NOMBRE_TABLA) +           ' (CLIENTE_CODIGO, CAJA_CODIGO, CAJA_NUMERO) VALUES ('
  23.     + CONVERT(VARCHAR(20),@CLIENTE_CODIGO) + ',' + CONVERT(VARCHAR, @CAJA_CODIGO) + ',' + CONVERT(VARCHAR(20),@CAJA_NUMERO) + ')'
  24.     EXEC sp_executesql @SQL
  25.  
  26. EXEC [SP_LOT_INSERTLOTEMP] 100,1,2,100  
  27.  
  28. SELECT * FROM [dbo].[INGRESOLOTEMP_100]
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 20/02/2015, 11:26
 
Fecha de Ingreso: abril-2008
Mensajes: 112
Antigüedad: 16 años
Puntos: 0
Respuesta: ERROR EN SP - Conversion failed when converting the nvarchar value

Estimado Libras
gracias por el apoyo y la correccion.


Saludos

Etiquetas: conversion, failed, nvarchar, select, siguiente, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:28.