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- CREATE TABLE [dbo].[INGRESOLOTEMP_100]( 
-     [CLIENTE_CODIGO] [SMALLINT] NOT NULL, 
-     [CAJA_CODIGO] [nvarchar](20) NULL, 
-     [CAJA_NUMERO] [SMALLINT] NOT NULL, 
- ) 
El SP tiene que ingresar datos en esta tabla, por lo tanto tengo lo siguiente:    
Código SQL:
Ver original- ALTER PROCEDURE [dbo].[SP_LOT_INSERTLOTEMP] 
-     @IDENT_TABLA NVARCHAR(10), 
-     @CLIENTE_CODIGO SMALLINT, 
-     @CAJA_CODIGO NVARCHAR(15), 
-     @CAJA_NUMERO SMALLINT 
-   
- AS 
-     DECLARE @NOMBRE_TABLA NVARCHAR(40) 
-         SELECT @NOMBRE_TABLA = 'INGRESOLOTEMP_' + @IDENT_TABLA 
-   
-     DECLARE @SQL NVARCHAR(MAX) 
-        SET @SQL = 'INSERT into dbo.' + quotename(@NOMBRE_TABLA) +           '(CLIENTE_CODIGO, CAJA_CODIGO, CAJA_NUMERO) VALUES ('  
-     + @CLIENTE_CODIGO + CONVERT(VARCHAR, @CAJA_CODIGO) + @CAJA_NUMERO + ''')' 
-     EXEC sp_executesql @SQL 
Me produce un error al ejecutarlo:  
Código SQL:
Ver original- 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.