【发布时间】:2016-12-01 03:02:58
【问题描述】:
我在 SQL Server 中有一个存储过程,它包含多个结果集(即,它包含多个 SELECT 语句)。这是一种编程的好习惯?
例如:
我有一个Person 和一个Person_Address 表。
创建表:Person
CREATE TABLE [dbo].[Person]
(
[id] [int] IDENTITY(1,1) NOT NULL,
[firstName] [varchar](50) NOT NULL,
[lastName] [varchar](50) NOT NULL,
)
插入数据:
INSERT INTO dbo.Person([firstName], [lastName)
VALUES ('John', 'Michle')
INSERT INTO dbo.Person([firstName], [lastName])
VALUES ('Emma', 'Watson')
GO
创建表Person_Address:
CREATE TABLE [dbo].[Person_Address]
(
[id] [int] IDENTITY(1,1) NOT NULL,
[pid] [int] NOT NULL,
[address] [varchar](50) NOT NULL,
[city] [varchar](50) NOT NULL,
)
插入数据:
INSERT INTO dbo.Person_Address([pid], [address], [city], [ispreferred])
VALUES ('1', 'Eiffel Tower', 'Paris'])
INSERT INTO dbo.Person_Address([pid], [address], [city], [ispreferred])
VALUES ('1', 'Donghai Bridge', 'China')
INSERT INTO dbo.Person_Address([pid], [address], [city], [ispreferred])
VALUES ('2', 'Nile River', 'Egypt')
GO
存储过程返回多个结果集
CREATE PROCEDURE GetPersonInfoMultiRS
@PersonID int
AS
BEGIN
SET NOCOUNT ON;
SELECT p.* FROM Person p WHERE p.id = @PersonID;
SELECT pa.* FROM Person_Address pa WHERE pa.pid = @PersonID;
END
GO
在上面的存储过程中 GetPersonInfoMultiRS 包含两个 SELECT 语句,在我的实际项目中我有 18 个 SELECT 声明。让我知道这是不是编程的好习惯?我无法在谷歌、雅虎和其他搜索引擎中得到具体的解释。请帮助我。
【问题讨论】:
标签: sql sql-server stored-procedures multiple-resultsets