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
    ```
    
相关推荐
阳光男孩012 小时前
MySQL基础之约束
android·数据库·mysql
AI人H哥会Java2 小时前
【PostgreSQL】运维篇—— 实战案例分析:从需求到实现
运维·数据库·sql·postgresql
bug菌¹3 小时前
滚雪球学Redis[1.1讲]:什么是Redis?
数据库·redis·缓存
IT规划师4 小时前
C#|.net core 基础 - 删除字符串最后一个字符的七大类N种实现方式
c#·.netcore·字符串·字符
什么鬼昵称5 小时前
Pikachu-Sql-Inject - 通过sql进行远程服务器控制(试验)
android·服务器·sql
zeroner_5 小时前
【SQL】DDL语句
数据库·sql·mysql
七折困5 小时前
DBMS-3.2 SQL(2)——DML的SELECT(含WHERE、聚集函数、GROUP BY、HAVING之间的关系)
数据库·sql·mysql
丶21365 小时前
【SQL】掌握SQL查询技巧:数据分组与排序
数据库·后端·sql
Davina_yu5 小时前
finereport制作带刷新和滚动的明细表
数据库·数据分析
__water5 小时前
『网络游戏』动态界面制作创建角色UI【02】
c#·unity引擎·3d模型动态投影ui界面·rawimage