初入Sql Server 之 函数及事务的简单使用

一、简介

记录一下在Sql Server 中函数以及事务的使用,用户自定义包括标量函数、内联表值函数和多语句表值函数

二、各种函数的使用

2.1 标量函数

  (1)标量函数可以传入单个或多个参数,并返回单个值,可以多个sql 语句以及逻辑代码封装到标量函数中,可以简化编程

  (2)创建标量函数需要使用 create function,其格式为 create function [函数名](参数1 参数1类型)returns 返回值类型

 

--创建
create function GetSum( @value_1 int, @value_2 int )returns int
as
begin
    declare @sumValue int
    set @sumValue = @value_1 + @value_2 
    return @sumValue 
end

--调用
declare @value_1 int  
declare @value_2 int 
declare @sumValue int 
set @value_1 = 2
set @value_2 = 3
set @sumValue = dbo.GetSum(@value_1 , @value_2 )
print(@sumValue )

2.2 内联表值函数

  表值函数可以传入单个或多个参数,并返回一个表,并且不需要begin end

--创建
create function GetChildOrderBySex( @id int) returns table
as
    return ( select * from WorkOrder where [Id]=@id )

--调用
select * from GetChildOrderBySex( 11 )

2.3  多语句表值函数

  多语句表值函数可以返回多个语句的结果,将表作为返回值,可以在表中插入多条数据

create function  GetModelInfoById(@id int) returns @temp table
(
     child_order_id int,
     amountPerBox int,
     deviceid varchar(50), 
     boxcode varchar(50),
     
)
as
begin
    insert into @temp 
    select c.child_order_id ,c.amountPerBox ,m.deviceid ,m.boxcode 
    from child_order  c, model_info m
        where c.child_order_id = m.child_order_id and c.child_order_id = @id
    return
end

--调用多语句表值函数
select * from GetModelInfoById( 11 )     

三、事务处理

事务处理不适合处理大量的数据,会占用过多的系统资源

declare @err int
set @err = 0
begin transaction
    update child_order set child_order_id = 11 where [child_order_id] = 1
    set @err = @err + @@error  --记录是否出现错误    
    if @err = 0     
        commit transaction  --事务提交
    else  
        rollback transaction  --事务回滚    

 

posted @ 2022-08-31 19:41  just--like  阅读(106)  评论(0编辑  收藏  举报