如何在SQL Server中强制nvarchar输入宽度?

Don*_*nes 5 sql-server error-handling nvarchar

我有一个我为我们的生产线创建的脚本,用户在执行之前将一些变量输入到脚本中.问题是变量是NVARCHAR(9),如果用户输入10个字符,那么最后一个字符被切断(正如预期的那样)我想知道的是如果输入一个值,我怎么能让SQL抛出一个错误太长?这个问题源于用户指责他们的输入.例:

Valid input - 
DECLARE @ClientCode NVARCHAR(9)
SET @ClientCode = N'ABCDEFGHI'
SELECT  @ClientCode

Results
ABCDEFGHI
Run Code Online (Sandbox Code Playgroud)

输入无效 -

DECLARE @ClientCode NVARCHAR(9)
SET @ClientCode = 'ABCDDEFGHI'
SELECT @ClientCode

Results
ABCDDEFGH
Run Code Online (Sandbox Code Playgroud)

我希望的是一个SSMS会引发错误的设置.我希望避免的是 -

DECLARE @ClientCode NVARCHAR(50)
...

IF LEN(@ClientCode) > 9
RAISERROR('Too long dummy.',16,1)
Run Code Online (Sandbox Code Playgroud)


谢谢你的帮助

Sco*_*man 1

请参阅SQL Server 在存储过程中静默截断 varchar - SQL Server 无法设置为自动引发存储过程内插入的截断错误,因此您必须自己执行检查。您可以在存储过程中执行此操作(您列为“希望避免”的代码),也可以在客户端应用程序中预先进行验证。