我已经为我们的生产线创建了一个脚本,用户在执行之前将一些变量输入到脚本中。问题是变量是NVARCHAR(9),并且如果用户输入10个字符,最后一个字符被切断(如预期的那样),我想知道的是如果SQL输入一个值太长?这个问题源于用户粗暴地指责他们的输入。 例子:如何在SQL Server中强制使用nvarchar输入宽度?
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)
感谢您帮助
我认为你应该把这个验证客户端,而不是在数据库中......不需要为了告诉用户输入过长而往返数据库。更好的是,甚至不要让他们输入太长的字符串。 –
我同意你的意见。但是,这不是我正在处理的系统中的一个选项。 这些脚本由SSMS内的非常JR技术人员运行。所以没有客户端。该脚本用于创建事物的客户端。我的解决方案是让所有这些脚本都被技术人员可以登录的Web前端解雇,将他们的参数输入到Web表单中,然后单击“去”。 不幸的是,管理层希望保持现状:“我们一直这样做多年,我不明白为什么我们应该花这笔钱用正确的方式”...... –