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
    ```
相关推荐
专注API从业者18 分钟前
Open Claw 京东商品监控选品实战:一键抓取、实时监控、高效选品
java·服务器·数据库
大迪deblog23 分钟前
系统架构师-数据库-数据库设计
数据库·oracle·系统架构
leo__52035 分钟前
IEC 104 协议 C 语言实现
c语言·数据库
摇滚侠35 分钟前
DBeaver 导入数据库 导入 SQL 文件 MySQL 备份恢复
java·数据库·mysql
若兰幽竹1 小时前
【从零开始编写数据库系统:架构设计与实现】第5章:查询执行引擎与火山模型
数据库·架构·数据库内核·toydb
天空属于哈夫克32 小时前
企业微信API常见的错误和解决方案
java·数据库·企业微信
东风破1372 小时前
DM8达梦数据库备份、恢复原理介绍
数据库·oracle·dm达梦数据库
鹏子训2 小时前
AI记忆新思路:用SQLite替代向量数据库,去EMBEDDINGS化,谷歌开源Google Always On Memory Agent
数据库·人工智能·sqlite·embedding
Frank_refuel2 小时前
终端环境下:Ubuntu 22.04.1 安装 MySQL 数据库
数据库·mysql·ubuntu
摇滚侠2 小时前
VMvare 虚拟机 Oracle19c 安装步骤,远程连接 Oracle19c,百度网盘安装包
java·oracle