oracle 存储过程参数介绍 in ,out , in out 以及 执行(二)

存储过程参数
1.IN DEFAULT (默认)
2.OUT
3.IN OUT 可修改

形参和实参
-- 形参

1 CREATE PROCEDURE raise_sal(ID NUMBER ,sal NUMBER)
2 IS
3 BEGIN ...
4 END raise_sal;

-- 实参

1 emp_id := 100;
2 raise_sal(emp_id,2000);

-- in参数类型演示  薪水涨幅 percent

 1 CREATE OR REPLACE PROCEDURE raise_salary
 2 (
 3    ID IN employees.employee_id%TYPE ,
 4    PERCENT IN NUMBER
 5 )
 6 IS
 7 BEGIN
 8   UPDATE employees SET salary = salary * (1 + PERCENT/100) WHERE employee_id = ID;
 9 END raise_salary;
10 

-- 结果验证

1 SELECT * FROM employees WHERE employee_id = 206;
2 -- PL/SQL中执行
3 BEGIN
4 raise_salary(206,10);
5 END;
6 EXECUTE raise_salary(206,10); -- SQL命令行执行

-- out参数类型演示   查询指定员工的名字和薪水

 1 CREATE OR REPLACE PROCEDURE query_emp
 2 (
 3     ID IN employees.employee_id%TYPE,
 4     NAME OUT employees.last_name%TYPE,
 5     salary OUT employees.salary%TYPE
 6 )
 7 IS
 8 BEGIN
 9   SELECT last_name,salary INTO NAME,salary FROM employees WHERE employee_id = ID;
10 END;

--结果演示

 1 -- 在命令行执行
 2 SET serveroutput ON;
 3
 4 DECLARE
 5   emp_name employees.last_name%TYPE;
 6   emp_sal employees.salary%TYPE;
 7 BEGIN
 8   query_emp(206,emp_name,emp_sal);
 9   dbms_output.put_line(‘name :‘ || emp_name );
10   dbms_output.put_line(‘salary :‘ || emp_sal );
11 END;
12
13 -- 命令行执行(二)
14 VARIABLE NAME VARCHAR2(25)
15 VARIABLE sal NUMBER
16 EXECUTE query_emp(206,:NAME,:sal);

-- in out 类型参数
-- 参数传输方式

1.位置传输
2.名字传输 NAME=>VALUE
3.混合方式(1,2)

 1 CREATE OR REPLACE PROCEDURE add_dept
 2 (
 3     NAME IN departments.department_name%TYPE,
 4     loc IN departments.location_id%TYPE
 5 )
 6 IS
 7 BEGIN
 8   INSERT INTO departments (department_id,department_name,location_id)
 9   VALUES
10   (departments_seq.nextval,NAME,loc);
11   COMMIT;
12 END add_dept;

--结果验证 

1 --执行
2 EXECUTE add_dept(‘training‘,2500);
3 --验证
4 SELECT * FROM departments WHERE location_id= 2500;
5 --执行方式二
6 EXECUTE add_dept(loc=>2400,NAME=>‘education‘);
7 --验证
8 SELECT * FROM departments WHERE location_id= 2400;

-- 使用默认值定义
-- NAME departments.department_name%TYPE = ‘UNKNOW‘,
-- loc departments.location_id%TYPE = 1800

 

 1 CREATE  OR  REPLACE PROCEDURE add_dept
 2 (
 3     NAME departments.department_name%TYPE := ‘UNKNOW‘,
 4     loc  departments.location_id%TYPE := 1800
 5 )
 6 IS
 7 BEGIN
 8   INSERT INTO departments (department_id,department_name,location_id)
 9   VALUES
10   (departments_seq.nextval,NAME,loc);
11   COMMIT;
12 END add_dept;

-- 结果演示

1 --执行
2 EXECUTE add_dept();
3 --验证
4 SELECT * FROM departments WHERE location_id= 1800;
时间: 2024-08-01 22:44:58

oracle 存储过程参数介绍 in ,out , in out 以及 执行(二)的相关文章

oracle——存储过程参数

oracle 存储过程类型: 1.in:输入类型,即由应用程序将数据传入oracle存储过程中:这种参数在存储过程中是只读参数,在存储过程中无法对该类型的参数进行修改: 2.out:输出参数,是在存储过程中对该值进行赋值,在程序中获取值. 3.in out:输入输出参数,兼具以上两种特性,但可读可写. 验证输入参数: 由于默认参数是输入类型的,在上图中,对BAcount参数赋值,报错. 解决办法: CREATE OR REPLACE PACKAGE body BAWQ_PROC_JGZX IS

Oracle存储过程包含三部分:过程声明,执行过程部分,存储过程异常。

Oracle存储过程可以有无参数存储过程和带参数存储过程. 一.无参程序过程语法 create or replace procedure NoParPro as ; begin ; exception //存储过程异常 ; end;         二.带参存储过程实例 create or replace procedure queryempname(sfindno emp.empno%type) as         sName emp.ename%type;         sjob emp

oracle 存储过程详细介绍(创建,删除存储过程,参数传递等)

这篇文章主要介绍了oracle 创建,删除存储过程,参数传递,创建,删除存储函数,存储过程和函数的查看,包,系统包等相关资料,需要的朋友可以参考下 oracle 创建,删除存储过程,参数传递,创建,删除存储函数,存储过程和函数的查看,包,系统包 认识存储过程和函数 存储过程和函数也是一种PL/SQL块,是存入数据库的PL/SQL块.但存储过程和函数不同于已经介绍过的PL/SQL程序,我们通常把PL/SQL程序称为无名块,而存储过程和函数是以命名的方式存储于数据库中的.和PL/SQL程序相比,存储

oracle存储过程生成含有clob字段表的可执行导出脚本

oracle表如果含有clob字段,则无法导出用sql脚本,尤其需要进行数据备份或者数据导入导出时候不方便. 这个存储过程你只需传入表名和需要返回的结果,就可以获取可执行的sql,直接在PL/SQL执行返回的结果,即可将数据导出成sql, 存储过程如下 create or replace procedure generate_insert_sql(t_name in varchar2,execute_sql out varchar2) as CURSOR col_cur is select co

Oracle 存储过程

存储过程:就是一组用于完成特定数据库功能的SQL 语句集,该SQL语句集经过编译后存储在数据库系统中.在使用时候,用户通过指定已经定义的存储过程名字并给出相应的存储过程参数来调用并执行它,从而完成一个或一系列的数据库操作. Oracle存储过程包含三部分:过程声明,执行过程部分,存储过程异常. 1 create or replace procedure 过程名 2 as ...; --声明语句段 3 begin 4 ...; --执行语句段 5 exception --异常处理语句段 6 ...

在java中调用Oracle存储过程

在java中调用Oracle存储过程 本文介绍如何通过java来调用Oracle的存储过程 1. 编写存储过程 CREATE OR REPLACE PROCEDURE sp_pro3(sp_name VARCHAR2,sp_sal NUMBER ) IS BEGIN --根据用户名修改工资 UPDATE emp SET sal=sp_sal WHERE ename=sp_name; END; 引入jdbc6.jar,编写测试类Test.java package testOraclePro; im

ORACLE存储过程详解

ORACLE存储过程详解 1.定义 所谓存储过程(Stored Procedure),就是一组用于完成特定数据库功能的SQL语句集,该SQL语句集经过编译后存储在数据库系统中.在使用时候,用户通过指定已经定义的存储过程名字并给出相应的存储过程参数来调用并执行它,从而完成一个或一系列的数据库操作. 2.存储过程的创建 Oracle存储过程包含三部分:过程声明,执行过程部分,存储过程异常. (1)无参存储过程语法 1 2 3 4 5 6 7 8 create or replace procedure

Oracle存储过程基本语法介绍

Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程, 如果存在就覆盖它; 行2: IS关键词表明后面将跟随一个PL/SQL体. 行3: BEGIN关键词表明PL/SQL体的开始. 行4: NULL PL/SQL语句表明什么事都不做,这句不能删

Oracle 存储过程介绍

存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程, 如果存在就覆盖它; 行2: IS关键词表明后面将跟随一个PL/SQL体. 行3: BEGIN关键词表明PL/SQL体的开始. 行4: NULL PL/SQL语句表明什么事都不做,这句不能删去,因为PL/SQL体中至少需