如何写好数据库存储过程

首先需要判断一下是否存在存储过程

if exists (select * from sys.procedures where name='存储过程名字')         --判断是否存在存储过程
    drop proc 存储过程名字                 --删除存储过程
go

create proc 存储过程名字([@参数 数据类型 ])          --创建一个存储过程(参数可以带,也可不带,根据实际需求)

as

           增、删、改、查  字段                   --(存储过程的增、删、改、查  字段 必须写在as   go之间)

go

eval  存储过程名字                             --(调用存储过程 ,创建的存储过程带有参数,调用时也需要写入参数,参数顺序必须和创建时一 一对应)

完整的多条件查询存储过程、

create proc sel (@ProjectID int=0,@Content varchar(200)='',@TaskState int=0)
as
    declare @sql varchar(max)                    --定义一个字符串,给他一个最大长度,用来接收我们的查询语句
    set @sql = 'select Project.ProjectName,Task.* from Project,Task where Project.ProjectID= Task.ProjectID
    and Content like ''%'+@Content+'%'''           --模糊的联合查询,‘%’是通配符,表示0个或多个站位符
    
    if(@ProjectID<>0)                                     --判断整数类型的参数是否有值,如果有就查询,没有就跳过
        set @sql+=' and Project.ProjectID ='+ convert(varchar,@ProjectID)
        
            
    if(@TaskState<>0)
        set @sql+=' and TaskState ='+ convert(varchar,@TaskState)
    
    print @sql                                               --输出一下我们前面获取到的所有字符串
    exec (@sql)                                           --用exec输出必须带上(),
go

 exec sel                                                      --调用存储过程sel查询全部

exec sel 1,‘王五’,1                             --调用有参的sel准确查询

以上的查询存储过程是一个完整的多条件查询,创建时一定要注意定义参数时需要用@开头,数据类型跟在后面,两个参数之间用,隔开

if exists (select * from sys.procedures where name='selP')
    drop proc selP
go
create proc selP
as
    select * from Project
go

exec selp                        --这是一个简单的查询存储过程,只能查询一张表的全部信息

创建修改存储过程、

create proc up (@TaskID int)                                     --修改表中的数据需要主键,所以我们创建存储过程是必须要有主键的参数
as
    update Task set TaskState=2,FinishedTime=GETDATE() where TaskID=@TaskID   --修改语句跟平常我们所写的一样,只需要把有参数的传到相应的位置即可
go

exec up 5            --使用时必需要传入相应的参数

 

删除和添加同上

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值