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

⒈存储过程

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

  好处:

    ①提高代码的重用性

    ②简化操作

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

  1.创建语法 

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

  参数带output则为输出参数

  2.调用语法。

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

  3.删除存储过程

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

  4.查看存储过程的信息

 exec sp_helptext  '存储过程名';

⒉函数

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

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

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

  1.创建语法

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

    创建:

 create function funName(@paramName paramType)
returns returnType
as
begin
sql
end
go

    调用:

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

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

    创建:

 create function funName(@paramName paramType)
returns table
as
return (select * from Table)
go

    调用:

 select * from funName();

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

    创建:

 create function funName()
returns @result table(
id int,
username varchar(20)
)
as
begin
insert into @result select id,username from Study.dbo.users
return
end
go

    调用:

 select * from funName();

  2.删除函数

 drop function 函数名;

  3.查看函数

 exec sp_helptext '函数名';
 select definition from sys.all_sql_modules sm

 inner join sys.all_objects ao on sm.object_id = ao.object_id

 where name ='functionName'and type ='FN'

SqlServer存储过程及函数的更多相关文章

  1. sqlserver 存储过程 自定义函数 游标???

    create proc cur_fun( @cur cursor --输入参数 ) as begin declare @mytpye tb1_type ) fetch next from @cur i ...

  2. SqlServer判断数据库、表、字段、存储过程、函数是否存在

    原文:SqlServer判断数据库.表.字段.存储过程.函数是否存在 判断数据库是否存在 if exists (select * from sys.databases where name = '数据 ...

  3. sqlserver批量导出存储过程、函数、视图

    select text from syscomments s1 join sysobjects s2 on s1.id=s2.id  where xtype = 'V' xtype V   视图 P  ...

  4. SqlServer查看对象(表、存储过程、函数)在哪些地方被引用或引用哪些地方

    对象(如表)-->右键-->查看依赖关系 依赖于[]的对象:列出哪些存储过程.函数引用了该表 []依赖的对象:列出该存储过程.函数依赖了哪些表.函数.存储过程

  5. 我的MYSQL学习心得(十) 自定义存储过程和函数

    我的MYSQL学习心得(十) 自定义存储过程和函数 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心 ...

  6. 解剖SQLSERVER 第十五篇 SQLSERVER存储过程的源文本存放在哪里?(译)

    解剖SQLSERVER 第十五篇  SQLSERVER存储过程的源文本存放在哪里?(译) http://improve.dk/where-does-sql-server-store-the-sourc ...

  7. SqlServer存储过程学习笔记(增删改查)

    * IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值. CREATE PROCEDURE [dbo].[PR_NewsAffiche_AddNewsEntity] ( ...

  8. SQL Server中的CLR编程——用.NET为SQL Server编写存储过程和函数

    原文:SQL Server中的CLR编程--用.NET为SQL Server编写存储过程和函数 很早就知道可以用.NET为SQL Server2005及以上版本编写存储过程.触发器和存储过程的,不过之 ...

  9. ylb:SQLServer常用系统函数-字符串函数、配置函数、系统统计函数

    原文:ylb:SQLServer常用系统函数-字符串函数.配置函数.系统统计函数 ylbtech-SQL Server:SQL Server-SQLServer常用系统函数 -- ========== ...

随机推荐

  1. remote: Permission to user_name/Code.git denied to other_user_name. fatal: unable to access 'https://github.com/user_name/Code.git/': The requested URL returned error: 403

    Error msg: $ git push remote: Permission to xxx/Code.git denied to xxxxxx. fatal: unable to access ' ...

  2. deeplearing4j学习以及踩过的坑

    1. 添加dl4j后, run项目时, 一直run不起来, run按钮绿色但是点击没反应.   查看日志后发现: 是classpath太长导致的. 在本项目的.idea文件夹,找到文件夹中的works ...

  3. asp.net core 排序过滤分页组件:sieve(1)

    使用asp.net core开发时避免不了要用一个合适的分页组件来让前端获取分页数据.github上面有一个开源的分页组件在这方面很适合我的使用,于是我把他的文档翻译一下,随后会分析它里面的源码.这是 ...

  4. 2018年NGINX最新版高级视频教程

    2018年NGINX最新版高级视频教程,想要的联系我,QQ:1844912514

  5. 队列(FIFO)—循环队列、队列的链式存储

    1 队列的定义 队列是只允许在一端(队尾)进行插入操作,而在另一端(队头)进行删除操作的线性表. 2 队列的特点 1)先进先出是队列最大的特点,是应用中非常常见的模型,例如排队: 2)队列也属于线性表 ...

  6. CentOS7使用yum安装MySQL8.0

    1.yum仓库下载MySQL:sudo yum localinstall https://repo.mysql.com//mysql80-community-release-el7-1.noarch. ...

  7. jmeter压测数据库,抓包工具,python基础

    jmeter压力测试 前提场景的设置:单场景(单个接口进行压力测试一个请求)或混合场景(有业务流程的场景进行压力测试多个请求),压测时间一般在5--1515分组具体看需求. 数据准备:数据量少和数据量 ...

  8. 远离go path,弃用go get,使用go mod 进行go语言的学习

    标题说的是go语言的学习,因为我也没做过开发 文章要解决的仅仅是一个问题 当你使用go get 无论如何get不到所需的包的问题 第一步就是下载goland 新手极其推荐goland,因为直接使用gl ...

  9. TCPDUMP 使用教程

    TCPDUMP 命令使用简介 简单介绍 tcpdump 是一款强大的网络抓包工具,运行在 Linux 平台上.熟悉 tcpdump 的使用能够帮助你分析.调试网络数据. 要想很好地掌握 tcpdump ...

  10. 第三篇--创建.gitignore文件

    小知识 ·  git add -A  提交所有变化 ·  git add -u  提交被修改(modified)和被删除(deleted)文件,不包括新文件(new) ·  git add .  提交 ...