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
    ```
相关推荐
freejackman15 小时前
【实战二】字段级血缘追踪:拆解 AST 迷局,精准穿透函数链与子查询
大数据·数据库·sql
.痞老板.16 小时前
mysql初阶--增删改查操作
数据库·mysql
波力海苔夹心脆67521 小时前
C# WPF 资源字典详解:ResourceDictionary、MergedDictionaries 与自定义控件案例
开发语言·c#·wpf·入门教程·resource·资源字典
lambo mercy1 天前
AI智能租房助手
数据库
浮生若城1 天前
MySQL:库与表的操作
数据库·mysql
薛定谔的悦1 天前
光储充一体机从主控到执行单元的双层架构
数据库·mongodb·架构
数字新视界1 天前
动环监控信创适配在智能机房管理中的应用价值与未来展望
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
AI导出鸭PC端1 天前
Perplexity批量导出没有PDF模式?AI导出鸭插件补上最后一块拼图
人工智能·pdf·c#·ai导出鸭
csdn_aspnet1 天前
Redis 入门:Windows、Mac安装指南
数据库·windows·redis·缓存·mac
山甫aa1 天前
锁一篇搞定:乐观锁、悲观锁、CAS、数据库锁与分布式锁【从零开始的 Web 后端学习】
java·数据库·分布式·后端·学习·web