Sql server 带参数的多选择存储过程
我对存储过程很感兴趣,所以我从解释我要实现的目标开始。 我有一个excel应用程序从SQL server获取数据。我在一个参数不断变化的循环中完成了6条sql SELECT语句。 我已经设法将一个SQL更改为存储过程,并且它正在工作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
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可以,否则请避免。这正是我要找的。非常感谢