怎么写oracle存储过程
create or replace procedure HelloWorld as
begin
dbms_output.put_line('HelloWorld');
end;
调用存储过程的方式有两种:
命令调用:exec helloworld
语句块调用:begin helloworld; end; /
示例1:删除emp01表中的员工
create or replace procedure del_emp01 is
begin
delete from emp01 where empno=7369;
end;
调用:exec del_emp01;
示例2:删除指定empno的员工
create or replace procedure del_emp01(v_empno in emp01.empno%type) is
begin
delete from emp01 where empno=v_empno;
end;
调用:exec del_emp01(7521);
插入数据
示例:插入emp01表中指定的员工
create or replace procedure ins_emp01 (v_empno emp01.empno%type,v_ename emp01.ename%type) as
begin
insert into emp01(empno,ename) values(v_empno,v_ename);
end;
调用:exec ins_emp01(1000,'李四');
更新数据
示例:更新emp01表中指定员工的姓名
create or replace procedure upd_emp01 (v_empno emp01.empno%type,v_ename emp01.ename%type) as
begin
update emp01 set ename=v_ename where empno=v_empno;
end;
调用:exec upd_emp01(1000,'张三');
查询数据
示例:查询emp表中指定员工的信息
create or replace procedure sel_emp01 (v_empno emp01.empno%type,v_emp01_data out emp01%rowtype) as
begin
select * into v_emp01_data from emp where empno=v_empno;
end;
带有输出参数的存储过程不能使用命令直接调用,只能由语句块或程序调用。
示例:使用scott用户登录,统计某个部门的员工的工资总和、人数和平均工资
create or replace procedure deptcount (v_deptno emp.deptno%type,v_sal_sum out number,v_recordes out number,v_avg_sal out number,errorMsg out varchar2) is
begin
select sum(sal) into v_sal_sum from emp group by deptno having deptno=v_deptno;
select count(*) into v_recordes from emp group by deptno having deptno=v_deptno;
select avg(sal) into v_avg_sal from emp group by deptno having deptno=v_deptno;
exception when no_data_found then
errorMsg:='没有该部门';
end;
调用:declare v_sal_sum number; v_recordes number; v_avg_sal number(8,2); v_errormsg varchar2(20);
begin
deptcount(90,v_sal_sum,v_recordes,v_avg_sal,v_errormsg);
dbms_output.put_line(v_sal_sum||' '||v_recordes||' '||v_avg_sal);
dbms_output.put_line(v_errormsg);
end;
输出参数示例
create or replace procedure my_pro(v_num in number,v_result out number) is v_temp number;
begin
v_temp:=0;
for i in 1..v_num loop
v_temp:=v_temp+i;
end loop;
v_result:=v_temp;
end;
调用:declare v_recieve number;
begin
my_pro(100,v_recieve);
dbms_output.put_line(v_recieve);
end;
既是输入参数又是输出参数示例
create or replace procedure my_pro1(v_i in out number) is v_j number;
begin
v_j:=30;
v_i:=v_i*v_j;
end;
调用:declare v_t number;
begin
v_t:=20;
my_pro1(v_t);
dbms_output.put_line(v_t);
end;
oracle存储过程怎么写循环
写循环的操作方法和步骤如下:1、第一步,编写存储过程的整体结构,然后定义变量,见下图。2、其次,完成上述步骤后,在定义变量后定义游标,begin,select sysdate into v_date from dual,end test_proc,如下图所示。3、接着,完成上述步骤后,写一个for循环,游标开始for循环,为临时变量名任意起个...
oracle怎么执行存储过程
在Oracle数据库中执行存储过程,可以使用SQL*Plus或PL\/SQL Developer等工具。当存储过程没有参数时,可以直接调用,命令形式如下:无参数调用:1. 使用EXEC语句:EXEC 过程名;2. 或者使用BEGIN...END语句:BEGIN 过程名 END;当存储过程有IN参数时,可以使用如下命令调用:IN参数调用:1. 使用EXEC语句:...
oracle怎么写存储过程
给你示例你参考下:---建立存储过程:CREATE OR REPLACE PROCEDURE P_name--存储过程名字 (i_var in int, --输入参数1 o_var OUT varchar2 --输出参数1 )IS v_STR VARCHAR2(200); --定义存储过程内部的局部变量 BEGIN --下面是存储过程的主体实现部分 v_STR := i_var;dbms_output.put_l...
如何开发ORACLE存储过程
一。 概述Oracle存储过程开发的要点是:1; 使用Notepad文本编辑器,用Oracle PL\/SQL编程语言写一个存储过程;2; 在Oracle数据库中创建一个存储过程;3; 在Oracle数据库中使用SQL*Plus工具运行存储过程;4; 在Oracle数据库中修改存储过程;5; 通过编译错误调试存储过程;6; 删除存储过程;二。环境配置包括...
ORACLE中怎么执行存储过程
在Oracle数据库中执行存储过程的方式相对简单。使用SQL*Plus工具可以直接运行存储过程,具体命令为:在SQL*Plus中,你可以使用exec 存储过程名命令来执行存储过程。如果存储过程需要传递参数,那么你需要在命令中写明参数。例如,如果存储过程名为my_procedure,并且需要两个参数,你可以这样调用它:exec my_...
oracle怎么写存储过程?
你首先要了解存储过程包括哪些模块,哪些是必备的,哪些是可选的.\\x0d\\x0a另外呢,如果有条件的话,最好能找一些模板看看别人是怎么写的,再结合你们公司的实际情况,做一些适当的调整.\\x0d\\x0a例如create or replace procedure +过程名字(变量名 in,数据类型,变量名 out 数据类型)等\\x0d\\x0a...
oracle存储过程循环怎么写
Oracle中有三种循环(For、While、Loop):1、loop循环:create or replace procedure pro_test_loop isi number;begini:=0;loop i:=i+1; dbms_output.put_line(i); if i>5 then exit; end if;end loop;end pro_test_loop;2、while循环:create or replace procedure pro_test_loop ...
oracle存储过程调用(oracle存储过程超详细使用手册)
Oracle存储过程的调用及使用方法如下:一、创建存储过程 基本语法:使用 CREATE OR REPLACE PROCEDURE 命令来创建或替换存储过程。参数定义:在存储过程定义中,可以使用 Name IN OUT TYPE 来表示参数,如果没有参数则省略此部分。关键字:IS:用于引入SQL语句块。BEGIN:开启执行语句块。END;:结束语句块。
Oracle存储过程游标for循环怎么写
在Oracle中,存储过程中的FOR循环用于循环执行一系列操作,直到循环条件不再满足。以下是一些基本的FOR循环示例:1. 常规FOR循环:FOR loop_counter IN 1..10 LOOP ...executablestatements...END LOOP;这段代码会从1到10循环10次,每次循环执行executablestatements。2. 倒序FOR循环:FORIN[REVERSE].....
如何在ORACLE中使用JAVA存储过程
比如下面写的是Oracle的一个存储过程:create or replace procedure queryempinfo(eno in number,pename out varchar2,psal out number,pjob out varchar2)as begin --得到该员工的姓名 月薪和职位 select ename, sal, job into pename, psal, pjob from emp where empno = eno;end;Java调用...