如何从存储过程返回较少的列?

时间:2016-02-10 16:35:31

标签: sql-server stored-procedures

我有一个遗留存储过程,它通过当前直接在整个系统中使用的表类型接受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中有没有办法实现这一目标?

1 个答案:

答案 0 :(得分:3)

在single-id过程中,执行基于表的过程,将结果存储在临时表(或表变量)中。

然后只从临时表中选择所需的列。