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:
El SP tiene que ingresar datos en esta tabla, por lo tanto tengo lo siguiente:Ver original
CREATE TABLE [dbo].[INGRESOLOTEMP_100]( [CLIENTE_CODIGO] [SMALLINT] NOT NULL, [CAJA_CODIGO] [nvarchar](20) NULL, [CAJA_NUMERO] [SMALLINT] NOT NULL, )
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.