truncarían truncado tipo texto por los derecha datos dato cadena binarios sql sql-server

sql - truncado - Cadena o datos binarios podrían truncarse. La instrucción se ha terminado



dato de tipo texto truncado por la derecha (4)

Cuando define varchar etc. sin una longitud, el valor predeterminado es 1.

Cuando n no se especifica en una definición de datos o declaración de declaración de variable, la longitud predeterminada es 1. Cuando n no se especifica con la función CAST, la longitud predeterminada es 30.

Por lo tanto, si espera 400 caracteres en @trackingItems1 columna @trackingItems1 de stock , use nvarchar(400) .

De lo contrario, está intentando ajustar> 1 carácter en nvarchar(1) = fail

Como comentario, esto también es un mal uso de la función de valor de tabla porque es una "declaración múltiple". Se puede escribir así y funcionará mejor.

ALTER FUNCTION [dbo].[testing1](@price int) RETURNS AS SELECT ta.item, ta.warehouse, ta.price FROM stock ta WHERE ta.price >= @price;

Por supuesto, puedes usar una instrucción SELECT normal ...

Me he encontrado con un problema con el servidor SQL, esta es la función que he creado:

ALTER FUNCTION [dbo].[testing1](@price int) RETURNS @trackingItems1 TABLE ( item nvarchar NULL, warehouse nvarchar NULL, price int NULL ) AS BEGIN INSERT INTO @trackingItems1(item, warehouse, price) SELECT ta.item, ta.warehouse, ta.price FROM stock ta WHERE ta.price >= @price; RETURN; END;

Cuando escribo una consulta para usar esa función como la siguiente, recibo el error.

Cadena o datos binarios podrían truncarse. La instrucción se ha terminado

¿Cómo resolverlo? Gracias

select * from testing1(2)

Así es como creo la tabla.

CREATE TABLE stock(item nvarchar(50) NULL, warehouse nvarchar(50) NULL, price int NULL);


En mi caso, estaba recibiendo este error porque mi tabla tenía

varchar(50)

pero estaba inyectando una cadena larga de 67 caracteres, lo que resultó en este error. Cambiándolo a

varchar(255)

arreglado el problema


Especifique un tamaño para el artículo y el almacén como en [dbo]. [Testing1] FUNCIÓN

@trackingItems1 TABLE ( item nvarchar(25) NULL, -- 25 OR equal size of your item column warehouse nvarchar(25) NULL, -- same as above price int NULL )

Dado que en MSSQL solo decir que nvarchar es igual a nvarchar (1), por lo tanto, los valores de la columna de la tabla de valores se truncan


La longitud máxima de la columna de destino es más corta que el valor que intenta insertar.

Haga clic con el botón derecho en la tabla en el administrador de SQL y vaya a ''Diseño'' para visualizar la estructura de la tabla y las definiciones de columna.

Editar:

Intente establecer una longitud en sus inserciones nvarchar que sean iguales o más cortas que las definidas en su tabla.