数据库

 首页 > 数据库 > Oracle > PL/SQL存储过程简析

PL/SQL存储过程简析

分享到:
【字体:
导读:
         摘要:PL/SQL存储过程简析--createorreplace创建或替换,如果存在就替换,不存在就创建createorreplaceprocedurepiscursorcisselect*fromdept2forupdate;beginforrow_recordin... Syntax...

PL/SQL存储过程简析
PL/SQL存储过程简析
 
--create or replace 创建或替换,如果存在就替换,不存在就创建
create or replace procedure p
is
  cursor c
  is
  select * from dept2 for update;
begin
  for row_record in c loop
    if (row_record.deptno = 30) then
      update dept2 set dname = substr(dname, 0, length(dname) - 3) where current of c;
    end if;  www.2cto.com  
  end loop;
end;
 
exec p;
 
begin
p;
end;
 
--带参存储过程
--in 输入参数,不带in out 默认输入参数
--out 输出参数
--in out 同时带的是输入输入参数
create or replace procedure p2(
       a in number,
       b number,
       s_result out number,
       s_temp in out number
  )
is
begin
  if (a > b) then
    s_result := a;
  else
    s_result := b;
  end if;
  s_temp := s_temp + 3;
end;
 
--调用存储过程
declare
  v_a number := 4;
  v_b number := 6;
  v_result number;
  v_temp number := 5;
begin
  p2(v_a, v_b, v_result, v_temp);
  dbms_output.put_line(v_a);
  dbms_output.put_line(v_b);
  dbms_output.put_line(v_result);
  dbms_output.put_line(v_temp);
end;  www.2cto.com  
 
---删除一个表的过程
create or replace procedure drop_table(tname varchar2)
as
  total int := 0;
begin
     select count(*) into total from user_tables 
            where table_name = upper(tname);
     if total >= 1 then
        execute immediate 'drop table '||tname; --此处必须用动态sql
     end if;
end;
select * from user_tables;
 
--递归存储过程
create or replace procedure pro_emp(sEmpno emp.empno%type, sLevel integer)
is
       cursor c is select * from emp where mgr = sEmpno;
       prefixStr varchar(255);
begin
  for i in 1..sLevel loop
    prefixStr := prefixStr || '----';
  end loop;  www.2cto.com  
  
  for row_data in c loop
    dbms_output.put_line(prefixStr || row_data.ename);
    pro_emp(row_data.empno, sLevel + 1);
  end loop;
end;
 
select * from emp;
begin
  pro_emp(7839, 0);
end;
 
 
摘自 mingyunduoshou的专栏
PL/SQL存储过程简析
分享到:
解析Oracle数据扫描Oracle SQL优化引导局...
解析Oracle数据扫描Oracle SQL优化引导局部扫描方法(7) 相关链接 解析Oracle数据扫描Oracle SQL优化引导局部扫描方法(1) http://www.2cto.com/database/201205/130424.html; 解析Oracle数据扫描Oracle SQL优化引导局部扫描方法(2) http://www.2cto.com/database/201205/130428.html; 解析Oracle数据扫描Oracle SQL...
Oracle下实现主键的自增
Oracle下实现主键的自增 Oracle下实现主键的自增   --建表MSHOW_ SYSUSER_INFO   create table MSHOW_ SYSUSER_INFO ( ID int primary key, ROLE_ID int not null, LOGIN_NAME varchar2(50) not null, USER_NAME varchar2(20), USER_PHONE varchar2(20), USER_DEPARTMENT varchar2(50), USER_ADDR varchar2(200), PASSWO...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……