数据库的存储过程理解为,处理数据的子程序,写起来像函数,用起来像函数,在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在启动过程中自动执行的一些存储过程,这些存储过程都不能有参数的。

最新文章

  1. FLEX布局的一些问题和解决方法
  2. Web AppBuilder Widget使用共享类库的方式
  3. C#高级编程笔记 Delegate 的粗浅理解 2016年9月 13日
  4. union和union all有什么不同?
  5. Hadoop第10周练习—Mahout部署及进行20newsgroup数据分析例子
  6. Android Log图文详解
  7. CommonJS规范
  8. 加载驱动模块时Device or resource busy的解决方法
  9. NSURLSession 请求
  10. Android logcat使用
  11. memcached一些整理
  12. ANDROID_MARS学习笔记_S05_002_给传感器注册listener
  13. mysql group_concat函数是有长度限制的
  14. hdu 动态规划(46道题目)倾情奉献~ 【只提供思路与状态转移方程】(转)
  15. CSSc常用样式
  16. linux命令的排列、替换与别名
  17. 用git工作的流程
  18. Overture如何更改音符符尾设置
  19. 如何获取微信小店小程序的AppID
  20. System.Data.SqlClient.SqlException: 数据类型 text 和 varchar 在 equal to 运算符中不兼容。

热门文章

  1. 小结:Swift、OC语言中多target在代码中如何区分
  2. iOS实现高斯模糊效果(Swift版本)
  3. Java中boolean类型占用多少个字节
  4. input标签禁止输入,隐藏光标
  5. HTML5新特性-多线程(Worker SharedWorker)
  6. 初学 Java Script (数据类型)
  7. shell 分割字符串存至数组
  8. springcloud(一):大话Spring Cloud
  9. [angularjs] MVC + Web API + AngularJs 搭建简单的 CURD 框架
  10. cin 字符串输入