使用varchar(max)作为存储过程参数是一个好主意吗?

Ken*_*130 6 t-sql stored-procedures

我有一个存储过程,它采用一串管道分隔的ID数组并解析出来.我希望在事务中发生这种情况,所以不要一次一个地传递它们.

如果我使用varchar(max)来限制传入的参数的大小,这会导致问题吗?我没有看到限制被击中,但我也不想猜测或对字符串施加任意限制.

CREATE PROCEDURE myProc
    @IDs varchar(max) 
AS

BEGIN
  ...
END
GO
Run Code Online (Sandbox Code Playgroud)

Joh*_*ren 4

没什么好说的。varchar(max)其行为与任何少于 8000 个字符的 varchar 一样,直到超过 8000 个字符。如果实际数据少于 8000 个字符,varchar(200)则 和之间应该几乎没有差异。varchar(max)如果您期望较小的输入,但不能排除较大的输入,那么 avarchar(max)就很好。