【发布时间】:2017-07-16 21:19:07
【问题描述】:
我有一个存储过程,它会生成一个填充有 INT 的临时表。我还有另一个存储过程,我想获取一个 INT 列表来对它们执行处理。
据我所知,没有一种干净的方法可以在存储过程之间传递值列表,因此我将临时表中的 INT 转换为 VARCHAR,其中包含 CSV 格式的 INT。然后,我的另一个存储过程接收包含 CSV 值的 VARCHAR 并将它们解析回表格格式以开始处理。
我担心的是我的 CSV 方法使用了 .Split 方法,我不能在我的部署环境中使用它,而且似乎也是一种传递值的资源繁重的方式。
我的第一个存储过程中的表到 CSV 转换如下所示:
DECLARE @tmpCSV VARCHAR(250)
set @tmpCSV = '';
SELECT @tmpCSV = @tmpCSV + CAST(i.HistoryID AS VARCHAR) + ', ' FROM @tmpIntTbl i
我在其他存储过程中的 CSV 到表转换如下所示:
INSERT INTO @TempTable
SELECT CAST(items AS INT)
FROM dbo.Split(@PassedInInts, ',')
第二个 SPROC 定义:
CREATE PROCEDURE [dbo].[SecondSPROC]
(
@TheIDS THENEWTYPE READONLY
)
我想知道是否有更简洁的方法在存储过程之间传递 INT 列表?
提前致谢!
【问题讨论】:
标签: sql-server database tsql csv stored-procedures