SQL Server—T-sql存储过程详解

存储过程

  • T-SQL 存储过程是在 SQL Server 数据库中编写的一种程序,它可以包含一系列的 T-SQL 语句,用于完成特定的数据库操作任务。存储过程在数据库中被创建,然后可以通过指定存储过程的名称并给出参数(如果该过程接受参数)来执行。

    • 1概念:

      预先存储好的sql程序,通过名称和参数进行执行,供应程序去调用,也可以有返回结果,存储过程可以包含sql语句,可以包含流程控制、逻辑语句等。

    2 系统自带存储过程

      1. 列出服务器所有数据库 exec sp_databases
      1. 列出有关指定数据库或者所有的数据库信息 exec sp_helpdb MSDB
      1. 更改数据库名字,@newname 新名字; @dbname 旧名称 exec sp_renamedb @dbname = 'AsD',@newname = 'AD'
      1. 返回某个表列的信息 exec sp_columns Students
    • 5 查询一个表的约束信息 exec sp_helpconstraint Students

      1. 查询表的所有信息 exec sp_help Students
      1. 查看某个表的索引信息 exec sp_helpindex Students

    3 自定义带参数存储过程

    • 语法:

    复制代码
    ```sql
    -- create procedure过程名
    -- @参数1 数据类型
    -- @参数2 数据类型
    -- as 
    --   sql语句
    -- go
    ```
    • 实例:

    复制代码
    ```sql
    create procedure usp_test2
    	@cs int,
    as
    	select StudentId from Students where @cs = Id
    go
    -- 调用带参数的存储过程
    exec usp_test2 1000
    ```

    4 自定义不带参数存储过程

    • 语法:

    复制代码
    ```sql
    -- create procedure过程名
    -- as 
    --   sql语句
    -- go
    ```
    • 实例:

    复制代码
    ```sql
    create procedure usp_test2
    as
    	select StudentId from Students where Id = 100000
    go
    -- 调用带参数的存储过程
    exec usp_tes
    ```

    5 自定义带输出参数存储过程

    • 语法:

    复制代码
    ```sql
    -- create procedure过程名
    -- @参数1 数据类型 output
    -- as 
    --   sql语句
    -- go
    ```
    • 实例:

    复制代码
    ```sql
    create procedure usp_tt3
    	-- 输出参数返回值
    	@jigecount int output,
    	@quekaocount int output
    as
    	select @jigecount = 23,@quekaocount=30
    go	
    
    -- 调用
    declare @a int,@b int
    exec usp_tt3  @a output,@b output
    print(convert(varchar,@a)+'i'+convert(varchar,@b)) --打印结果
    
    -- 结果:23i30
    ```

    6 自定义带默认值参数的存储过程

    • 语法:

    复制代码
    ```sql
    -- create procedure过程名
    -- @参数1 数据类型 = 默认值 output
    -- as 
    --   sql语句
    -- go
    ```
    • 实例:

    复制代码
    ```sql
    create procedure usp_test2
    	@cs int = 10 output
    as
    	select StudentId from Students where @cs = Id
    go
    -- 调用带参数的存储过程(调用时可以不带参数)
    exec usp_test2
    ```
相关推荐
GBASE4 分钟前
GBASE南大通用技术分享:构建最优数据平台,GBase 8s数据库安装准备(二)
数据库
林熙蕾LXL18 分钟前
SQL Server——基本操作
数据库·sql
GBASE34 分钟前
GBASE南大通用技术分享:构建最优数据平台,GBase 8s数据库安装准备
数据库
IOT-Power41 分钟前
树莓派 Ubuntu 24.04 开机换源总结
linux·数据库·ubuntu
阿华田51242 分钟前
重试框架 -- Guava Retry
数据库
柠檬汁Dev1 小时前
还在等DBA给你库?我3分钟就拉起一个高可用集群
数据库·云计算·dba
安卓开发者1 小时前
鸿蒙NEXT应用数据持久化全面解析:从用户首选项到分布式数据库
数据库·分布式·harmonyos
土了个豆子的2 小时前
03.缓存池
开发语言·前端·缓存·visualstudio·c#
少男的脸红藏不住心事2 小时前
GD32入门到实战35--485实现OTA
数据库·mongodb·nosql
FLS1682 小时前
Kali搭建sqli-labs靶场
linux·sql·安全·网络安全