18.存储过程--SQL

好文要顶:

一、创建、使用存储过程



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;
时间: 2024-10-31 11:13:30

18.存储过程--SQL的相关文章

MySQL-进阶18 存储过程- 创建语句-参数模式(in/out/inout-对应三个例子) -调用语法-delimiter 结束标记'$'

/* MySQL-进阶18 存储过程 和 函数 存储过程和函数:类似于java中的方法 好处: 1.提高代码的重用性 2.简化操作 */ #存储过程 /* 含义: 一组已经预见编译好的SQL语句的集合, 理解成批处理语句; 好处: 减少操作次数,减少了编译次数,减少了和服务器的连接次数,提高了效率 */ /* #一: 创建语句 create procedure 存储过程名(参数列表) begin 存储过程体(一组合法的SQL语法) end 注意: 1.参数列表包含三个部分 : 参数模式 参数名

18.Mysql SQL优化

18.SQL优化18.1 优化SQL语句的一般步骤 18.1.1 通过show status命令了解各种SQL的执行频率show [session|global] status; -- 查看服务器状态信息show session status; -- 查看session(当前连接)级别的服务器状态信息,默认session级别show global status; -- 查看global(数据库启动至今)级别的服务器状态信息show status like 'Com_%'; -- 查看当前sess

(18)存储过程

在sqlplus中执行一下操作 set serveroutput on; --打开sqlplus的输出功能 一. 只有执行体部分的结构,也就是只有begin ...end 部分 begin dbms_output.put_line('123'); end; / 运行后 斜杠  /  就是让服务器执行前面所写的 SQL 脚本. 因为你普通的 select 语句, 一个分号,就可以执行. 但是如果你的是存储过程, 那么遇到分号,就不能马上执行. 这个时候,就需要通过 斜杠 来执行 二. 包含声明和执

基于ORACLE建表和循环回路来创建数据库存储过程SQL语句来实现

一个.概要 在实际的软件开发项目.我们经常会遇到需要创造更多的相同类型的数据库表或存储过程时,.例如.假设按照尾号点表的ID号,然后,你需要创建10用户信息表,的用户信息放在同一个表中. 对于类型同样的多个表,我们能够逐个建立,也能够採用循环的方法来建立.与之相相应的,能够用一个存储过程实现对全部表的操作.也能够循环建立存储过程,每一个存储过程实现对某个特定表的操作. 本文中,我们建立10个员工信息表.每一个表中包括员工工号(8位)和年龄字段,以工号的最后一位来分表.同一时候,我们建立存储过程实

4. 存储过程 · sql编程

1.存储过程框架 变量:局部.全局.内置 declare 仅用在begin...end中, 声明的是局部变量, 作用范围也仅在此begin...end中 declare 前不能有任何其他非declare语句 declare v1, v2, v3 int default 0;            -- 无default则初始值为null declare a, b int; set a = 10, b = 20 全局变量: 以@开头如@a set @a = 100;                

存储过程系列之调试存储过程 SQL Server 2005

在数据库中直接调试  在数据库中直接调试是调试SQL Server 2005的存储过程的最简单的方法. 在Visual Stuido的IDE中你可以选择单步执行存储过程,然后就可以一条语句一条语句地单步执行了,同时你也可以检查和修改存储过程内的T-SQL变量和参数.本文结尾处提供下载的压缩包中包括一个SQL Server 2005 Express版本的Northwind数据库.我在其中添加了一个名为“DoThings”的存储过程,它有一个参数@CategoryID.这是一个没什么实用价值的存储过

18、SQL提高篇(变量的使用 拓展)

例题用表:[cost] 注:费用类型个数不定 将上图所示的表根据type列的类型转为下图样式 *用变量将类型名分组动态提取的方法: 1 declare @sql1 varchar(1000) 2 set @sql1='' 3 select @sql1= case @sql1 when '' then '' else @sql1+',' end +ltrim(str([type])) from cost group by [type] 4 select @sql1 查询的结果如下: 解法: 1.普

一次性删除数据库所有表和所有存储过程 SQL语句

今天转移数据库数据,需要把数据库原来的表和存储过程清空.删除所有的表:如果由于外键约束删除table失败,则先删除所有约束: --/第1步**********删除所有表的外键约束*************************/ DECLARE c1 cursor for select 'alter table ['+ object_name(parent_obj) + '] drop constraint ['+name+']; ' from sysobjects where xtype =

经典存储过程;SQl 存储过程

利用存储过程来实现下面的应用: 从一个账户转指定数额的款项到另一个账户中. */ 建表:create table account(accountnum int,uname char(10),total float) insert into account values(1001,'u1',50000) insert into account values(1002,'u2',1000) select * from account 建存储过程: CREATE PROCEDURE TRANSFER