我的存储过程的varchar
值可以包含200个字符。当字符数超过200个时,我需要交易的raiserror
和rollback
。
这该怎么做?我使用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
答案 0 :(得分:1)
没有必要做任何特别的事情。正如 @GSerg 所评论的那样,参数类型为varchar(200)
,这意味着该过程永远不会获得200个以上的字符,因此您无法在程序本身,因此最好从中删除验证。
您可以在调用之前尝试进行一些验证。最好在客户端执行此操作,或者在另一个将其包装的过程中执行。
另一种选择是将定义更改为varchar(max)
并在那里验证长度(因为它现在将允许几乎无限制的字符串)。