【发布时间】:2012-12-14 16:02:19
【问题描述】:
我有一个为生产线创建的脚本,用户在执行前将一些变量输入到脚本中。问题是变量是 NVARCHAR(9),如果用户输入一个 10 个字符的字符串,最后一个字符被截断(如预期的那样)我想知道的是,如果他们输入一个值,我如何让 SQL 抛出错误太长?这个问题源于用户对输入的过度指法。 示例:
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 表单中,然后单击“开始”。不幸的是,管理层希望保持现状“我们多年来一直这样做,我不明白为什么我们应该花钱以正确的方式去做”......
标签: sql-server error-handling nvarchar