`
Novem
  • 浏览: 669 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

创建存储过程:

阅读更多

存储过程

-- 定义:

    在大型数据库中,存储过程是一组为了完成特定功能的SQL语句集。

    存储在数据库中,经过第一次编译后再次调用,不需要再次编译,用户通过指定存储过程的名字并给出参数来执行它(如果该存储过程有参数)。

    存储过程大大的提高了SQL语句的功能和灵活性。

 

 

-- 创建存储过程:

create procedure 过程名(参数 参数数据类型) is/as
    声明变量
begin
    过程体
end 过程名;

 

-- 修改存储过程:

create or replace procedure 过程名 ……

    在 create 后面加上 or replace

 

-- 删除存储过程:

drop procedure 过程名;

 

 

 

-- 不带参数的存储过程:

 

Ex1:创建一个简单的存储过程pro_1,调用该过程时,将emp表中的empno为7369的员工的ename修改为CANDY。

create procedure pro_1 as
begin
  update emp set ename = 'CANDY' where empno = 7369;
end pro_1;

 

-- 过程创建好后,过程体中的内容并没有执行,仅仅只是被编译,需要调用该过程。

 

-- 调用过程的两种形式:execute / call

exec pro_1;

或者:

call pro_1();

 

 

 

-- 带参数的存储过程:

 

-- 过程的参数分为 in参数 和 out参数 和 in out参数

 

-- in参数,输入参数。在调用的时候要传入一个值。

   如果在定义的时候没有说明参数类型,则默认为in参数

 

-- out参数,输出参数。调用完之后输出结果。

 

-- in out参数,同时拥有in参数和out参数的特性,既能接受用户的传值,又允许在过程体中修改其值,并可以将值返回。

   但是它不接受常量值,只能使用变量为其传值。

 

 

-- in参数:

 

Ex2:创建带in参数的存储过程pro_2,为该过程设置两个in参数,分别用于接受用户提供的empno和ename。

         并且调用pro_2,通过该过程将empno为7369的员工的ename修改为ELLA。

create procedure pro_2(emp_no in number,emp_name in VARCHAR2) is
begin
  update emp set ename = emp_name where empno = emp_no;
end pro_2;

-- 赋值的形式主要有以下两种:

-- 不指定参数名:

exec pro_2(6500,'ELLA'); 

-- 指定参数名:

exec pro_2(emp_name => 'ELLA',emp_no => 7369);

 

 

-- out参数:

 

Ex3:创建存储过程pro_3,为该过程设置一个in参数和一个out参数,其中in参数接受用户提供的empno,然后在该过程体中将empno对应的ename值传递给out参数。

         调用存储过程pro_3,为其in参数赋值为7369,并声明变量emp_name接受与输出其out参数的返回值。

create procedure pro_3(emp_no in number,emp_name out VARCHAR2)is
begin
  select ename into emp_name from emp where empno = emp_no;
end pro_3;

 调用存储过程pro_3

VARIABLE emp_name VARCHAR2(10);
exec pro_3(7369,:emp_name);
print emp_name;

-- 注: 调用存储过程,如果需要显示该过程中out参数的返回值,还需要实现使用variable语句声明对应的变量接受返回值,并在调用过程中绑定该变量。

-- 注:在execute语句中绑定变量时,需要在变量名前添加冒号(:)

 

 

-- in out参数:

 

Ex4:创建存储过程pro_4,通过该过程交换两个变量(n1 / n2)中的值。

         调用pro_4过程,调用前声明为in out参数赋值的变量,调用后使用select语句输出交换值后的结果。

create procedure pro_4(n1 in out number,n2 in out number)is
temp1 number;
temp2 number;
begin
  temp1 := n1;
  temp2 := n2;
  n1 := temp2;
  n2 := temp1;
end pro_4;

  调用pro_4过程:

variable n1 number;
variable n2 number;
exec :n1 :=1111;
exec :n2 :=9999;
exec pro_4(:n1,:n2);

-- 注:使用execute命令可以为变量赋值,要在变量名前添加冒号(:)

 

 

 

分享到:
评论

相关推荐

    创建存储过程.rar

    本压缩包文件"创建存储过程.rar"主要关注如何在不同的数据库系统中创建和使用存储过程。 一、存储过程的概念与优势 存储过程是数据库中的一个重要组件,它允许开发人员将一系列复杂的SQL语句、控制流程语句以及事务...

    DB2数据库创建存储过程时遇到的错误

    "DB2数据库创建存储过程时遇到的错误" DB2数据库创建存储过程时遇到的错误是指在Unix操作系统下,使用db2命令创建存储过程失败的情况。这种情况下,查看db2diag.log文件会发现类似于errno: 0x0FFFFFFFFFFF7AF0 : 0x...

    实验六:创建存储过程和触发器1

    在实验中,你需要创建四个不同的存储过程: - **MyProc1**:查询特定系(如计算机系)的学生姓名、性别和年龄。这需要使用`SELECT`语句,并根据需求设置输出格式,如汉字标题。 - **MyProc2**:接受系名和课程名...

    SQL语句创建存储过程

    以下将详细解释如何创建存储过程,以及如何实现增、删、查、改(CRUD)操作。 一、创建存储过程 创建存储过程的基本语法如下: ```sql CREATE PROCEDURE 存储过程名 @参数1 参数类型, @参数2 参数类型, ... AS...

    oracle存储过程编译

    1. 创建存储过程:首先,我们需要创建一个存储过程,例如使用 `create or replace procedure` 语句。 2. 编写存储过程:然后,我们需要编写存储过程的代码,例如使用 PL/SQL 语言。 3. 编译存储过程:最后,我们需要...

    SQL_SERVER数据库开发之存储过程应用宝典

    3. 创建存储过程:使用CREATE PROC语句创建存储过程,例如:CREATE PROC upGetUserName @intUserId INT, @ostrUserName NVARCHAR(20) OUTPUT AS BEGIN ... END 4. 存储过程的参数:存储过程可以具有多个参数,参数...

    sql 存储过程的学习 和实例

    1. 创建存储过程:使用`CREATE PROCEDURE`语句定义存储过程的名称、参数(如果需要)和执行的SQL语句。 2. 调用存储过程:使用`CALL`语句执行已创建的存储过程。 三、存储过程的参数类型 1. 输入参数(IN):只能...

    数据库原理与应用:第9章 存储过程的创建和使用.ppt

    1. 创建存储过程:存储过程是SQL语句和可选控制流程语句的预编译集合。 2. 执行存储过程:存储过程可以通过接收参数向调用者返回结果集,结果集的格式由调用者确定。 3. 查看和修改存储过程:存储过程可以在SQL ...

    mysql 查询存储过程的 sql 语句.7z

    创建存储过程: 创建存储过程需要使用 CREATE PROCEDURE 语句。以下是一个创建存储过程的示例: CREATE PROCEDURE GetCustomerOrders ( IN customerId INT ) CALL GetCustomerOrders(1234); 存储过程中...

    oracle-存储过程.ppt

    1. 创建存储过程:可以在当前数据库内创建存储过程,除了临时存储过程。临时存储过程总是创建在 tempdb 数据库中。 2. 执行存储过程:可以使用 EXECUTE 语句来执行存储过程。 3. 修改和删除存储过程:可以使用 ALTER...

    存储过程 存储过程概述 创建存储过程 执行存储过程

    存储过程概述 创建存储过程 执行存储过程 查看、重命名和删除存储过程 创建带有参数的存储过程

    Oracle数据库创建存储过程和触发器

    Oracle 数据库创建存储过程和触发器 Oracle 数据库创建存储过程和触发器是高级数据库开发设计的重要组成部分。存储过程和触发器是一种特殊类型的数据库对象,它们可以实现复杂的业务逻辑和数据处理操作。 存储过程...

    Oracle 存储过程学习文档

    **2.1 创建存储过程:** 存储过程的创建使用`CREATE OR REPLACE PROCEDURE`语句。例如: ```sql CREATE OR REPLACE PROCEDURE my_procedure (p_param IN NUMBER) AS BEGIN -- 过程体 END; ``` - `IN`表示参数是...

    SQL创建存储过程[横向显示列的数据]

    例如,如果我们有一个表,其列名根据某个条件动态变化,我们可以使用以下步骤创建存储过程: 1. 获取表的所有列名。 2. 构建一个`UNPIVOT`或者`CASE`语句,将行转换为列。 3. 执行动态构建的SQL语句。 假设我们有...

    SQLsever存储过程教程

    - **创建存储过程:** - 使用`CREATE PROCEDURE`语句创建存储过程。 - 可以指定输入和输出参数。 - 包含一系列SQL语句。 - **执行存储过程:** - 使用`EXECUTE`或`EXEC`命令执行存储过程。 - **修改存储过程:**...

    plsql创建存储过程并创建job定时任务执行-详细笔记文档总结

    plsql创建存储过程并创建job定时任务执行详细笔记文档总结 在 Oracle 中,plsql 是一种强大的编程语言,可以用来创建存储过程和定时任务执行。在本文中,我们将详细介绍如何使用 plsql 创建存储过程并创建 job 定时...

    有关C#实验六存储过程和绑定

    1. 创建存储过程:在数据库管理系统(如SQL Server)中,开发者可以创建自定义的存储过程,包含多个SQL语句,然后通过T-SQL语句进行定义。 2. 调用存储过程:在C#中,我们通常使用ADO.NET的SqlCommand对象来调用存储...

    MySQL实现创建存储过程并循环添加记录的方法

    创建存储过程并循环添加记录是数据库管理中的常见任务,尤其是在需要批量插入数据时。以下将详细解释如何在MySQL中实现这一功能。 首先,我们需要了解存储过程的基本创建方法。在MySQL中,我们使用`CREATE ...

    linux下mysql的操作与存储过程

    1. 创建存储过程:以`CREATE PROCEDURE`开头,定义参数(如果有的话),然后编写SQL语句。例如,创建一个返回两个数字之和的存储过程: ``` DELIMITER // CREATE PROCEDURE add_numbers(IN num1 INT, IN num2 INT...

Global site tag (gtag.js) - Google Analytics