存储过程和函数类似于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. 使用 canvas 画图时图像文字模糊的解决办法

    最近在使用 canvas 画图的时候,遇到了图像文字模糊的问题,解决思路就是根据分辨率创建不同尺寸的画布.以下是创建高分辨率画布的代码: /** * 创建高分辨率画布 * @param w 画布宽 * ...

  2. JavaScript判断对象是否是NULL

    这个方法是我踩了很多坑之后找到的,对数组等类型的对象都很好使,果断收藏! function isEmpty(obj) { // 检验 undefined 和 null if (!obj &&a ...

  3. 升级:DNAtools for Excel工具箱,2.x英文版- VBA代码破解工具

    原始出处:www.cnblogs.com/Charltsing/p/DnaTools.html QQ:564955427 DNA工具箱全部功能一览:    单元格焦点指示(支持Excel 2007~2 ...

  4. 安装Mediamanager 后Messenger后无法登录

    安装MediaManager以后Messenger无法登录,提示无法连接服务,出现以下信息. 解决办法,进入控制面板,卸载"Microsoft URL Scan"程序,即可解决.

  5. HDU 4547 CD操作

    传送门 没啥好说的.就是一个LCA. 不过就是有从根到子树里任意一个节点只需要一次操作,特判一下LCA是不是等于v.相等的话不用走.否则就是1次操作. 主要是想写一下倍增的板子. 倍增基于二进制.暴力 ...

  6. 关于TVWALL 通过AS300获取状态连接失败

    昨天晚会突然之间频繁出现tvwall视频软件,断开AS300管理软件的故障 发现AS300当中的cms服务进程,占用内存250M左右,一般情况下估计就是50M左右,增长了不少 无奈之下,只有重启AS3 ...

  7. Hadoop系列(三):hadoop基本测试

    下面是对hadoop的一些基本测试示例 Hadoop自带测试类简单使用 这个测试类名叫做 hadoop-mapreduce-client-jobclient.jar,位置在 hadoop/share/ ...

  8. UOJ 7 NOI2014 购票

    题意:给一棵树计算一下各个点在距离限制下以一定的费用公式通过不停地到祖先最后到达一号点的最小花费. 第一种做法:线段树维护带修凸壳.显然的,这个公式计算是p*x+q 所以肯定和斜率有关系.然后这题的d ...

  9. 清理Windows Serer Backup备份数据生成的卷影副本(DiskShadow命令)

    DiskShadow基本命令: 1.进入DiskShadow命令行: C:\>diskshadow 2.列出所有的卷影副本: DISKSHADOW> list shadows all 3. ...

  10. git最基础操作一

    1. 从远端克隆:git clone -b 克隆的分支 git的地址( eg:git clone -b master https://gitee.com/test/test.git ) 2.提交修改的 ...