我已经为生产线创建了一个脚本,用户可以在执行之前在脚本中输入一些变量。问题是变量是NVARCHAR(9),如果用户输入10个字符,最后一个字符被截断(如预期),我想知道的是,如果输入的值太长?此问题源于用户胖手指输入。
例子:
Valid input -
DECLARE @ClientCode NVARCHAR(9)
SET @ClientCode = N'ABCDEFGHI'
SELECT @ClientCode
Results
ABCDEFGHI
输入无效 -
DECLARE @ClientCode NVARCHAR(9)
SET @ClientCode = 'ABCDDEFGHI'
SELECT @ClientCode
Results
ABCDDEFGH
我希望能使SSMS出现错误的设置。我希望避免的是-
DECLARE @ClientCode NVARCHAR(50)
...
IF LEN(@ClientCode) > 9
RAISERROR('Too long dummy.',16,1)
谢谢你的帮助
最佳答案
请参阅SQL Server silently truncates varchar's in stored procedures-无法将SQL Server设置为针对存储过程内的插入自动引发截断错误,因此您必须自己执行检查。您可以在存储过程(您列出为“希望避免”的代码)中执行此操作,也可以事先在客户端应用程序中进行验证。
关于sql-server - 如何在SQL Server中强制nvarchar输入宽度?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13882170/