189 8069 5689

oracle中怎么写过程,oracle的使用教程

Oracle 中这个存储过程怎么写?

declare

成都创新互联公司-专业网站定制、快速模板网站建设、高性价比定日网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式定日网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖定日地区。费用合理售后完善,十多年实体公司更值得信赖。

in_begin_time varchar2(20); --定义起始时间

in_end_time varchar2(20);--定义结束时间

begin

in_begin_time :='2012-01-01 00:00:00';--起始时间赋值

in_end_time :='2012-01-01 12:00:00';--结束时间赋值

while in_begin_time in_end_time --判断

loop --循环

dbms_output.put_line(in_begin_time||','||to_char(to_date(in_begin_time,'yyyy-mm-dd hh24:mi:ss')+1/24,'yyyy-mm-dd hh24:mi:ss')); --输出结果

in_begin_time := to_char(to_date(in_begin_time,'yyyy-mm-dd hh24:mi:ss')+1/24,'yyyy-mm-dd hh24:mi:ss');

end loop;

end;

dbms_output.put_line(in_begin_time||','||to_char(to_date(in_begin_time,'yyyy-mm-dd hh24:mi:ss')+1/24,'yyyy-mm-dd hh24:mi:ss'));这个地方其实是输出结果,当然这里可以调用那两个参数当你select语句里的变量

oracle存储过程并且怎么写

存储过程(procedure):是一个命名了的语句块,可以有0个或多个参数

语法:

create or replace procedure HelloWorld

as

begin

dbms_output.put_line('HelloWorld');

end;

调用存储过程

* 命令调用 exec helloworld

* 语句块调用

begin

helloworld;

end;

/

DELETE:

create or replace procedure del_emp01

is

begin

delete from emp01 where empno=7369;

end;

exec del_emp01;

create or replace procedure del_emp01(v_empno in emp01.empno%type)

is

begin

delete from emp01 wherer empno=v_empno;

end;

exec del_emp01(7521);

INSERT

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,'李四');

UPDATE

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,'张三');

SELECT

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;

带有输出参数的存储过程不能使用命令直接调用

只能由语句块或程序调用(JAVA) ****************************************************************

declare

v_emp_data emp01%rowtype;

begin

sel_emp01(7499,v_emp_data);

dbms_output.put_line(v_emp_data.ename||' '||v_emp_data.sal);

end;

调用:

declare

v_emp_data emp01%rowtype;

begin

sel_emp01(7499,v_emp_data);

dbms_output.put_line(v_emp_data.ename||' '||v_emp_data.sal);

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的存储过程怎么写?

create or replace function pagesize(p_sql varchar2,pno number,pnosize number,pcount out number)

return sys_refcursor

as

v_sql varchar(2000);

ccount number;

tmpsql varchar2(2000);

cur_data sys_refcursor;

begin

v_sql:='select count(*) from ('||p_sql||') t';

tmpsql:='select * from (select rownum rowa,d.* from ('||p_sql||') d where rownum='||pno*pnosize||') where rowa'||(pno-1)*pnosize;

execute immediate v_sql into ccount;

pcount:=ceil(ccount/pnosize);

open cur_data for tmpsql;

return cur_data;

end;

这是一个分页的存储过程

oracle存储过程怎么写循环

写循环的操作方法和步骤如下:

1、第一步,编写存储过程的整体结构,然后定义变量,见下图。

2、其次,完成上述步骤后,在定义变量后定义游标,begin,select sysdate into v_date from dual,end test_proc,如下图所示。

3、接着,完成上述步骤后,写一个for循环,游标开始for循环,为临时变量名任意起个名,输出一个字段,使用变量名.列名就好了,最后游标for循环就结束了,如下图所示。

4、最后,完成上述步骤后,试运行,单击“

DBMS Output”选项卡进行检查,运行成功,见下图。这样,问题就解决了。

oracle怎么写存储过程

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


分享文章:oracle中怎么写过程,oracle的使用教程
新闻来源:http://jkwzsj.com/article/hdjsij.html

其他资讯