SQL Server 返回结果集的几种方式

最近用到了SQL Server的几种结果集返回方法,这里整理如下(注:使用SQL Server 的  AdventureWorks2008 示例数据库

1. 使用 Table Function 返回结果集

-- 1. table function
use AdventureWorks2008
go

if exists (
       select 1
       from   sys.objects
              where [type] in (N'TF' ,N'IF' ,N'FN')
       and name = 'fn_getPerson'
   )
    drop function dbo.fn_getPerson
go

create function dbo.fn_getPerson
(
    @EntityID int
)
returns @result table (EntityID int ,PersonType varchar(10) ,FirstName varchar(50) ,LastName varchar(50))
as
begin
    insert into @result
      (
        EntityID
       ,PersonType
       ,FirstName
       ,LastName
      )
    select BusinessEntityID
          ,PersonType
          ,FirstName
          ,LastName
    from   Person.Person
           where BusinessEntityID = @EntityID

    return  -- return must be last sql
end
go


print('dbo.fn_getPerson has been created.')

-- select * from dbo.fn_getPerson(1)

2. 使用 Inline Function 返回结果集

-- 3. inline function
use AdventureWorks2008
go

if exists (
       select 1
       from   sys.objects
              where [type] in (N'TF' ,N'IF' ,N'FN')
       and name = 'fn_getPerson2'
   )
    drop function dbo.fn_getPerson2
go

create function dbo.fn_getPerson2
(
    @EntityID int
)
returns table
as
    return
    select BusinessEntityID
          ,PersonType
          ,FirstName
          ,LastName
    from   Person.Person
           where BusinessEntityID = @EntityID
go

print('dbo.fn_getPerson2 has been created.')

-- select * from dbo.fn_getPerson2(1)

3. 使用存储过程返回结果集

-- 3. procedure
use AdventureWorks2008
go

if exists (
       select 1
       from   sys.procedures
        where name = 'usp_getPerson'
   )
    drop procedure dbo.usp_getPerson
go

create procedure dbo.usp_getPerson
(
    @EntityID int
)
as
begin
    --....... do some process

    -- result of last query will return
    select BusinessEntityID
          ,PersonType
          ,FirstName
          ,LastName
    from   Person.Person
           where BusinessEntityID = @EntityID

end
go


print('dbo.usp_getPerson has been created.')

-- exec dbo.usp_getPerson @EntityID = 1
注:SQL Server 只返回最后一条查询的结果集


SQL Server的结果返回方法有几种。其中一种方法是使用Table Function返回结果。这种方法可以通过调用Table Function来查询数据并返回结果。另一种方法是使用存储过程存储过程是一段预先编译好的SQL代码,可以接受参数并返回结果。通过执行存储过程,可以查询数据并返回结果SQL Server返回存储过程中最后一条查询的结果。例如,在AdventureWorks2008数据库中,我们可以创建一个存储过程来查询Person表中的个人信息,并返回结果存储过程中的最后一条查询语句将返回结果,包含了BusinessEntityID、PersonType、FirstName和LastName等字段的数据。使用print语句可以输出一条消息来确认存储过程已经被创建。注意,SQL Server返回最后一条查询的结果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [SQL Server 返回结果几种方式](https://blog.csdn.net/xxc1605629895/article/details/78837527)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [SqlServer--将存储过程的结果写入一张表中](https://blog.csdn.net/ye1142262478/article/details/54575342)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值