SQL Server中对存储过程的理解
数据库的存储过程理解为,处理数据的子程序,写起来像函数,用起来像函数,在SQL Server中存储过程分为两大类,系统的和自定义的,系统的都放在master系统数据库中,自定义就是自己去写的,用DDL的相关语句即可,创建存储过程,就像函数一样,可以有参,也可以无参,无参的时候写起来很简单:
CREATE PROC hello
AS
BEGIN
/*....*/
END
GO
执行的时候也是,只需要在自定义存储过程执行即可
EXEC hello
有参的时候写法也不陌生:
CREATE PROC hello_1 @n1 int
AS
BEGIN
//.....
END
GO
EXEC hello_1 ''
/*或者 EXEC hello_1 @n2='123'*/
在执行的时候如果是批处理的第一条语句则可以将EXEC省略
在编写的时候,会有许多不同的需求,存储过程时没有返回值的,我们需要返回相关信息的时候就希望类似于C/C++一样传入指针或者引用,在SQL Server中实现的方式是在变量之后加上OUTPUT。
对参数进行修饰的属性还有很多:
| VARYING | 只适用于输出参数为Cursor变量,该参数由存储过程动态构造 |
| 参数=值 | 表示默认值 |
| READONLY | 修饰不能在存储过程中更新或者修改的参数,类似于C/C++的const |
| RECOMPILE | 执行存储过程时重新编译 |
注意事项:
自定义存储过程只能在当前数据库中创建,临时存储过程除外,临时存储过程在系统数据库tempdb创建
存储过程创建成功之后,过程名在sysobjects中,语句文本存放在syscomment中
自动执行存储过程是SQL Server在启动过程中自动执行的一些存储过程,这些存储过程都不能有参数的。
SQL Server中对存储过程的理解的更多相关文章
- Sql Server中使用存储过程来实现一些时间差的改变
Sql Server中的时间差是使用DATEDIFF来是现的 语法如下:DATEDIFF(要显示时间格式,开始时间,结束时间) 比如:DATEDIFF(minute,'2019-2-28 8:30', ...
- 对于Oracle、mysql和sql server中的部分不同理解
1.在mysql中事务默认是自动提交的,只有设置autocommit为0的时候,才用自己commit:(提到commit不要忘了rollback哦,回滚)2.但是在oracle中必须自己commit: ...
- sql server中扩展存储过程
--列出服务器上安装的所有OLEDB提供的程序 execute master..xp_enum_oledb_providers --得到硬盘文件信息 --参数说明:目录名,目录深度,是否显示文件 (少 ...
- SQL Server 中的存储过程
一:初步了解存储过程的使用 创建一个简单的存储过程 CREATE PROC spEmployee AS SELECT * FROM HumanResources.Employee; 执行这个存储过程: ...
- Sql server中依据存储过程中的部分信息查找存储过程名称的方法【视图和Function】
1.查询的语句: select a.id,b.name,a.*,b.* from syscomments a join sysobjects b on a.id=b.id where b.xtype= ...
- Sql server中根据存储过程中的部分信息查找存储过程名称的方法【视图和Function】
.查询的语句: select a.id,b.name,a.*,b.* from syscomments a join sysobjects b on a.id=b.id where b.xtype=' ...
- 遍历SQL SERVER中所有存储过程和触发器
如果需要查找某个存储过程或触发器中是否含有某段文本(比如:你想知道有哪些存储过程操作了某个表) 可以这么写 select name from sysobjects o, syscomments s w ...
- 快速查找sql server中的存储过程和视图
select a.name,a.[type],b.[definition] from sys.all_objects a,sys.sql_modules b where a.is_ms_shipped ...
- Sql Server 中查询存储过程的修改时间
1.按最近修改排序所有存储过程 SELECT [name], [create_date], [modify_date] FROM [sys].[objects] WHERE [type] = 'P' ...
随机推荐
- 1034. Head of a Gang
One way that the police finds the head of a gang is to check people's phone calls. If there is a pho ...
- oracle导入时提示IMP-00010:不是有效的导出文件,头部验证失败
oracle导入时提示IMP-00010:不是有效的导出文件,头部验证失败: 原因分析:导出的oracle的版本与导入的oracle数据库的版本不一致: 可直接将dmp文件用notepad++打开修改 ...
- python3和python2的区别部分
字典没有iteritems(),只有items() py2items()返回的是列表,iteritems()返回的是迭代器 py3items()返回的是迭代器
- std::thread使用
本文将从以下三个部分介绍C++11标准中的thread类,本文主要内容为: 启动新线程 等待线程与分离线程 线程唯一标识符 1.启动线程 线程再std::threada对象创建时启动.最简单的情况下, ...
- Spring事务隔离级别与传播机制详解,spring+mybatis+atomikos实现分布式事务管理
原创说明:本文为本人原创作品,绝非他处转载,转账请注明出处 1.事务的定义:事务是指多个操作单元组成的合集,多个单元操作是整体不可分割的,要么都操作不成功,要么都成功.其必须遵循四个原则(ACID). ...
- 用vuejs仿网易云音乐(实现听歌以及搜索功能)
前言 前端时间学了vue,一开始看了vue1.0,后来实在觉得技术总得实践,就直接上手vue2.0.然后花了将近一周时间做了一个网易云音乐的小项目.一开始觉得项目比较小,没必要用vuex所以就没有使用 ...
- linux下编译安装nginx
1.首先下载稳定版nginx1.10.2 使用wget命令下载 wget http://nginx.org/download/nginx-1.10.2.tar.gz 2.然后解压 tar -zxvf ...
- macOS 下配置 MAMP 开发环境(Mac + Apache + Mysql + PHP)
macOS 中已经内置了 PHP.Python.Ruby.Perl 等常用的脚本语言,以及 Apache HTTP 服务器,所以使用起来非常方便.本文以最新的 macOS Sierra 10.12 配 ...
- Failed to read artifact descriptor for xxx:jar 的Maven项目jar包依赖配置的问题解决
在开发的过程中,尤其是新手,我们经常遇到Maven下载依赖jar包的问题,也就是遇到“Failed to read artifact descriptor for xxx:jar”的错误. 对于这种非 ...
- String转int数字格式异常问题
写在前面的话 差不多一年前就计划写博客,可因为种种原因一直没有写,反而我身边的一些同学在我建议他们写博客不久之后就写了,比如张博同学,基本每次总结一个知识点就写一篇,这样不但方便自己以后查看翻阅,也 ...