Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 带参数的多选择存储过程_Sql Server_Stored Procedures - Fatal编程技术网

Sql server 带参数的多选择存储过程

Sql server 带参数的多选择存储过程,sql-server,stored-procedures,Sql Server,Stored Procedures,我对存储过程很感兴趣,所以我从解释我要实现的目标开始。 我有一个excel应用程序从SQL server获取数据。我在一个参数不断变化的循环中完成了6条sql SELECT语句。 我已经设法将一个SQL更改为存储过程,并且它正在工作 SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE Test @itm nvarchar(20) = 0 AS BEGIN SET NOCOUNT ON

我对存储过程很感兴趣,所以我从解释我要实现的目标开始。 我有一个excel应用程序从SQL server获取数据。我在一个参数不断变化的循环中完成了6条sql SELECT语句。 我已经设法将一个SQL更改为存储过程,并且它正在工作

 SET ANSI_NULLS ON
 GO
 SET QUOTED_IDENTIFIER ON
 GO
 CREATE PROCEDURE Test
     @itm nvarchar(20) = 0 
 AS
 BEGIN
    SET NOCOUNT ON;
    SELECT ISNULL(SUM(T.[some_field]),0) as [Sum]
    FROM [some_table] AS T, [some_other_table] AS F, [some_other_table2] AS I
    WHERE T.[field] = 1 AND I.[field] = @itm AND
    F.[field] = T.[field] AND F.[field] = I.[field]
 END
当我第一次使用它时,我开始怀疑是否有可能将所有6个SELECT查询放入一个存储过程中? 所有查询都会生成一个字段,该字段是数量的总和。 所有查询至少接受一个参数。 最后,我想接收一条包含6个字段的记录,我可以通过RangeA1.copyfromrecordset rst将其放入excel 而不是为每个选择创建6个不同的存储过程
它会像一个接一个的选择一样简单吗?那么参数呢?若两个查询的参数相同,那个么在这两个查询中是否命名相同?

可以从一个存储过程返回所有6个字段。在最基本的层面上,实现这一点的方法如下:

SELECT
    (
        SELECT ISNULL(SUM(T.[some_field]),0) as [Sum]
        FROM [some_table] AS T, [some_other_table] AS F, [some_other_table2] AS I
        WHERE T.[field] = 1 AND I.[field] = @itm AND
        F.[field] = T.[field] AND F.[field] = I.[field]
    ) Field1
    ,
        (
            -- Another query
        ) Field2
    , etc.

我会用UDF来代替SP@Sami:如果内联表有值,则UDF可以,否则请避免。这正是我要找的。非常感谢