Sqlserver数据库常用的语法总结(二)

关于存储过程的总结

1. 存储过程

  • 查询存储过程

    select * from sys.objects where name = 'GetUser' --存储 过程名称
    复制代码
  • 创建,修改存储过程

    create / alter proc GetUser  --创建存储过程 GetUser 
    @Id int --参数
    as 
    set nocount on;  --不返回计数,提高应用程序性能
    begin --开始
        select * from [dbo].[User] where Id=@Id  --执行sql语句
    --如果  需要返回值的话 return @Id
    end;--结束
    复制代码
  • 删除

    drop proc GetUser --删除 GetUser
    复制代码
  • 执行

    EXEC GetUser 1; --1是参数
    复制代码

2.函数(Function)

只能用表变量

  • 查询函数

    select * from sys.objects where name = 'f_splitlianxi' --函数名称
    复制代码
  • 创建修改

    create / ALTER  FUNCTION [dbo].[f_splitlianxi]       -----id 为第几个字段 ,val  为该字段值
    (
    @str NVARCHAR(max),--要分割的字符串
    @fengefu NVARCHAR(20)--进行分割的符号
    )RETURNS @table TABLE(id INT,val NVARCHAR(max))
    AS
    BEGIN 
        DECLARE @index INT,@startsplit INT,@id INT --@index分隔符所在的位置的下标 @startsplit 每次分割开始的位置
        SELECT @index=CHARINDEX(@fengefu,@str),@startsplit=1,@id=1
        WHILE @index>0
        BEGIN
            IF @id>1  --第一次循环之后 都执行这个方法体中的代码
            BEGIN 
                SELECT @startsplit=@index+LEN(@fengefu) --分割开始位置等于 之前的字符下标位置+字符本身的长度
                SELECT @index=CHARINDEX(@fengefu,@str,@startsplit)
                
            END 
            IF @index>0   --第一次循环 截取位置从@startsplit=1开始  
                BEGIN 
                    INSERT INTO @table VALUES (@id,SUBSTRING(@str,@startsplit,@index-@startsplit)) --要截取的字符串   开始位置  要截取的长度
                END 
            ELSE 
            BEGIN   --最后一次循环  此时由于匹配不到分割字符 @index=0 截取剩余的字符串
                INSERT INTO @table VALUES (@id,SUBSTRING(@str,@startsplit,LEN(@str)-@startsplit+1))
            END 
            SELECT @id=@id+1
        END
        RETURN 
    END
    复制代码
  • 删除

    drop function function_name; --函数名称
    复制代码
  • 执行

    select * from dbo.f_splitlianxi('123;234',';')
    复制代码

    结果如下

    id val
    1 123
    2 234

两者的区别

存储过程和函数的区别要有:
1、存储过程是SQL语句和可选控制流语句的预编译集合,而函数是由一个或多个 SQL 语句组成的子程序;
2、存储过程可以在单个存储过程中执行一系列SQL语句,而自定义函数有诸多限制;
3、执行方式不同。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享