zoukankan      html  css  js  c++  java
  • SqlServer存储过程及函数

      存储过程和函数类似于Java中的方法。

    ⒈存储过程

      一组预先编译好的sql语句的集合,理解成批处理语句。

      好处:

        ①提高代码的重用性

        ②简化操作

        ③减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率

      1.创建语法 

    1 if OBJECT_ID(N'procName',N'P') is not null
    2 drop proc procName
    3 create proc /*procedure*/ procName
    4 @paramName paramType /*= '默认值' output*/
    5 as
    6     sql
    7 go

      参数带output则为输出参数

      2.调用语法。

    1 exec 存储过程名(实参列表);

      3.删除存储过程

    1 drop proc /*procedure*/ 存储过程名;

      4.查看存储过程的信息

    1 exec sp_helptext  '存储过程名';

    ⒉函数

      函数和存储过程意义和好处都是一样的。它们的唯一区别就是:

        存储过程可以没有返回值,也可以有多个返回值,适合做批量插入数据、批量更新等。

        函数必须有返回值,而且只能有1个,适合做处理数据后返回1个结果。

      1.创建语法

        ①标量函数--即返回的结果只是一个标量,通俗的讲返回的结果就是一种类型的一个值。

        创建:

    1 create function funName(@paramName paramType)
    2 returns returnType
    3 as
    4 begin 
    5     sql
    6 end
    7 go

        调用:

    select dbo.函数名(参数列表); 

        ②内联表值函数--即返回的是一张表数据。

        创建:

    1 create function funName(@paramName paramType)
    2 returns table
    3 as
    4     return (select * from Table)
    5 go

        调用:

    1 select * from funName();

        ③多语句表值函数--即通过多条语句来创建Table类型的数据,由我们自行指定具体的Table类型的结构

        创建:

     1 create function funName()
     2 returns @result table( 
     3     id int,
     4     username varchar(20)
     5     )
     6 as
     7 begin
     8     insert into @result select id,username from Study.dbo.users
     9     return 
    10 end
    11 go

        调用:

    1 select * from funName();

      2.删除函数

    1 drop function 函数名;

      3.查看函数

    1 exec sp_helptext '函数名';
    1 select definition from sys.all_sql_modules sm
    2 
    3 inner join sys.all_objects ao on sm.object_id = ao.object_id
    4 
    5 where name ='functionName'and type ='FN'
  • 相关阅读:
    UPC2018组队训练赛第二场
    杭电多校训练第十场
    socks5 代理
    windows pip 报错Unable to find vcvarsall.bat
    emacs笔记
    homestead oci8
    pyenv install
    chrome 设置sock5代理
    laravel 接收post json
    laravel 使用已有数据库自动创建model
  • 原文地址:https://www.cnblogs.com/fanqisoft/p/10778948.html
Copyright © 2011-2022 走看看