Sql server 当CLR SP的结果数据应该被截断时,如何插入EXEC?

Sql server 当CLR SP的结果数据应该被截断时,如何插入EXEC?,sql-server,tsql,clrstoredprocedure,Sql Server,Tsql,Clrstoredprocedure,我将从CLR存储过程返回的结果集插入到表变量中。我得到错误:“System.Data.SqlClient.SqlException:字符串或二进制数据将被截断”,因为结果集中某些字符串的长度超过了临时表中定义的varchar限制。恼人的是,截断正是我想要的 那么,在插入存储过程时,如何截断(其中的字符串)结果集 我不想更改CLR SP的代码。正在插入的数据中的字符串具有任意长度。我想我应该使临时表的列足够大以接受数据,然后在插入后截断,例如 UPDATE #YourTempTable S

我将从CLR存储过程返回的结果集插入到表变量中。我得到错误:“System.Data.SqlClient.SqlException:字符串或二进制数据将被截断”,因为结果集中某些字符串的长度超过了临时表中定义的varchar限制。恼人的是,截断正是我想要的
那么,在插入存储过程时,如何截断(其中的字符串)结果集
我不想更改CLR SP的代码。正在插入的数据中的字符串具有任意长度。

我想我应该使临时表的列足够大以接受数据,然后在插入后截断,例如

UPDATE #YourTempTable
    SET ColumnA = LEFT(ColumnA, 20),
        ColumnB = LEFT(ColumnB, 50)

但我现在不知道有多大会提前“足够大”。我想我可以对我的表变量使用
varchar(max)
,但这不会导致性能下降吗?