如何用string_split结合CROSS APPLY将存储过程输出字符串转整数
修正后的实现代码
你的代码存在两个核心问题:一是没有捕获存储过程输出的ResultTable结果集,二是定义的临时表结构与后续查询需求不匹配。以下是正确的实现方案:
-- 第一步:定义表变量存储存储过程的输出结果 DECLARE @ProcResult TABLE (string_data VARCHAR(MAX)) -- 捕获存储过程返回的ResultTable INSERT INTO @ProcResult EXEC dbo.ProcName -- 第二步:定义存储拆分后整数的临时表 DECLARE @TempTable TABLE (SplitInt INT) -- 拆分string_data并转换为int后插入 INSERT INTO @TempTable (SplitInt) SELECT CAST(s.item AS INT) FROM @ProcResult CROSS APPLY STRING_SPLIT(string_data, ',') s
关键修正点说明
- 必须用
INSERT ... EXEC语法捕获存储过程的输出结果,否则无法对存储过程返回的string_data列进行后续处理 - 原代码中
@TempTable仅定义了SplitInt列,不存在string_data字段,直接从@TempTable关联拆分函数会报错 - 拆分时只需提取
STRING_SPLIT返回的item字段并转换为INT,无需使用SELECT *(避免引入无关列)
内容的提问来源于stack exchange,提问作者minnie
相关产品推荐
相关产品推荐

