存储过程的varchar值超出应有的值

时间:2018-11-21 10:19:28

标签: sql-server tsql

我的存储过程的varchar值可以包含200个字符。当字符数超过200个时,我需要交易的raiserrorrollback。 这该怎么做?我使用SQL Server

我有这个:

@employeeid int,
@questionid int,
@date date,
@comment varchar(200),
@score int

)
as

begin

begin transaction

update contentment
set date = @date, comment= @comment, score = @score
where employeeid= @employeeid and questionid= @quesitonid


if @comment> @comment
begin 

    rollback
    raiserror ('error more than 200 characters', 16, 1)
    return
end

commit
end

1 个答案:

答案 0 :(得分:1)

没有必要做任何特别的事情。正如 @GSerg 所评论的那样,参数类型为varchar(200),这意味着该过程永远不会获得200个以上的字符,因此您无法在程序本身,因此最好从中删除验证。

您可以在调用之前尝试进行一些验证。最好在客户端执行此操作,或者在另一个将其包装的过程中执行。

另一种选择是将定义更改为varchar(max)并在那里验证长度(因为它现在将允许几乎无限制的字符串)。