好文要顶:

一、创建、使用存储过程


Oracle版本:

CREATE PROCEDURE MailingListCount (
ListCount OUT INTEGER
)
IS
v_rows INTEGER;
BEGIN
SELECT COUNT(*) INTO v_rows
FROM Customers
WHERE NOT cust_email IS NULL;
ListCount := v_rows;
END;

分析▼
这个存储过程有一个名为ListCount的参数。此参数从存储过程返回一个值而不是传递一个值给存储过程。关键字OUT用来指示这种行为。
Oracle支持IN(传递值给存储过程)、OUT(从存储过程返回值,如这里)、INOUT(既传递值给存储过程也从存储过程传回值)类型的参
数。存储过程的代码括在BEGIN和END语句中,这里执行一条简单的SELECT语句,它检索具有邮件地址的顾客。然后用检索出的行数设
置ListCount(要传递的输出参数)。

使用:

var ReturnValue NUMBER
EXEC MailingListCount(:ReturnValue);
SELECT ReturnValue;

分析▼
这段代码声明了一个变量来保存存储过程返回的任何值,然后执行存储过程,再使用SELECT语句显示返回的值。

SQL Server版本:

CREATE PROCEDURE MailingListCount
AS
DECLARE @cnt INTEGER
SELECT @cnt = COUNT(*)
FROM Customers
WHERE NOT cust_email IS NULL;
RETURN @cnt;

分析▼
此存储过程没有参数。调用程序检索SQL Server的返回代码支持的值。其中用DECLA RE语句声明了一个名为@cnt的局部变量(SQL Server中
所有局部变量名都以@起头);然后在SELECT语句中使用这个变量,让它包含COUNT()函数返回的值;最后,用RETURN @cnt语句将计数返
回给调用程序。

调用:

DECLARE @ReturnValue INT
EXECUTE @ReturnValue=MailingListCount;
SELECT @ReturnValue;

最新文章

  1. VisualSVN-Server 安装以及使用教程
  2. 正则表达式30分钟入门:http://deerchao.net/tutorials/regex/regex.htm#mission
  3. JavaScript高级程序设计学习笔记--引用类型
  4. [5] 智能指针boost::shared_ptr
  5. 简单几何(线段相交) POJ 2653 Pick-up sticks
  6. 见怪不怪的typedef
  7. 05-C语言运算符
  8. Eclipse用法和技巧二十八:Eclipse插件Easy Explore的今世
  9. VS2012下基于Glut OpenGL glDepthMask示例程序:
  10. 第6组UI组件:ViewAnimator及其子类
  11. javascript:12种JavaScript MVC框架之比较
  12. 使用JS实现图片轮播滚动跑马灯效果
  13. ●POJ 1195 Mobile phones
  14. react生命周期,中间件、性能优化、数据传递、mixin的使用
  15. package.json包描述文件说明
  16. PAT 1112 Stucked Keyboard
  17. 安装pyenv virtualenv
  18. 记在WEBAPI中AutoMapper的初使用方法
  19. sysbench安装
  20. Jenkins系列-Jenkins修改主目录步骤说明

热门文章

  1. Spring Boot2.0之 整合JDBC
  2. math worksheet作业纸生成器
  3. cad定制快捷键
  4. matlab给图片插入说明文字
  5. 纯CSS3左右滑动开关按钮
  6. css(4)
  7. OGG 进程清除、重建
  8. bzoj 4753 [Jsoi2016]最佳团体——0/1分数规划
  9. Scala学习——类,继承,接口(中)
  10. web攻击之零:WEB攻击及防御技术汇总