我已经为生产线创建了一个脚本,用户可以在执行之前在脚本中输入一些变量。问题是变量是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/

10-11 06:33