SQL 服务器在选择查询中将具有多个列的 SP 输出连接成一个字符串



我有一个总是返回一行的旧版 SP(我无法更改该 SP),我需要以某种方式在多行的 select 语句中使用它(对于每一行,我需要调用该 SP)。最好的方法是什么?以某种方式将其包装到 TVF 中并调用该函数?

第二个问题是将该 SP 返回的所有字段连接到单个字符串的最佳方法是什么。 假设 SP 返回ID, 键, 值 我需要将其连接到一个字符串,例如"ID: 1, Key: NSR, Value: 154.4"

若要为每一行调用存储过程,需要使用 WHILE 循环或 CURSOR 进行循环。 您是否将其包装在 TVF 中取决于您。

要连接 SP 返回的字段,应使用变量。

可以使用WHILE循环多次调用存储过程。可以使用CONCAT将所有列值放在一个字符串中。这很好,因为它正在处理NULL值。

SELECT CONCAT('ID:', [ID], ', Key:', [Key], ', Value:', [Value]);

任何人,如果我是你,并且性能很重要,我会重写 SP 以支持处理多行。如果不允许更改 SP,请创建新的 - 将其用于新开发,而旧 SP 在旧代码中使用。

最新更新