我有一个遗留存储过程,它通过当前直接在整个系统中使用的表类型接受id列表:
[
{
id: 2,
name: "News",
count: 400, // 400 posts available
posts: [
{
id: 6,
title: "Quick brown fox",
},
{
id: 9,
title: "umps over lazy dog",
},
]
我还有一个类似的遗留存储过程,它只对单个id(输入参数)执行相同的查询,但返回两个较少的列(即在select中使用CREATE PROCEDURE [dbo].[DataLoadByList]
(
@CaseIds [dbo].[TTIdsList] READONLY
)
AS
BEGIN
SELECT *
FROM tblCases cases
INNER JOIN @CaseIds Ids ON cases.CaseId = Ids.Id
END
GO
但是不同的列名称。)< / p>
两者共享超过90%的代码,导致代码重复,并要求对每个更改进行双重编写......
我想重新实现单个id存储过程,以便它只调用基于表的存储过程,但在返回查询结果之前,将其过滤掉,以便它返回它用于返回的内容(&# 34;相同数量的列减去2&#34;)。
SQL Server中有没有办法实现这一目标?
答案 0 :(得分:3)
在single-id过程中,执行基于表的过程,将结果存储在临时表(或表变量)中。
然后只从临时表中选择所需的列。