orcal存储过程事例

来源:互联网 发布:软件开发 学校 编辑:程序博客网 时间:2024/05/13 11:22
A1 -A6 ,6张表,要求分别查出所有的A1.a1、A2.a2、A3.a3、A4.a4、A5.a5.
这五个字段插入到A6的表中去.
A6表的五个字段已经设置好了就是这五个字段
create or replace procedure sp_test
is
-- is和as是一样的
--   这里定义变量,以;分隔
 v_a1 A1.a1%rowtype;
  v_a2 A2.a2%rowtype;
  v_a3 A3.a3%rowtype;
  v_a4 A4.a4%rowtype;
  v_a5 A5.a5%rowtype;
begin
  select  a1 into v_a1 from A1;
  select  a2 into v_a2 from A2;
  select  a3 into v_a3 from A3;
  select  a4 into v_a4 from A4;
  select  a5 into v_a5 from A5;
  insert into A6(a1,a2,a3,a4,a5)values(v_a1 ,v_a2, v_a3, v_a4, v_a5 );
 commit;
end;

--创建一个带参数的存储过程
CREATE OR REPLACE PROCEDURE p
(v_a IN NUMBER,v_b NUMBER, v_ret OUT NUMBER, v_temp IN OUT NUMBER)
--IN 代表输入参数,什么都不写,默认是in,out 输参数,in out 既是输入也是输出
IS
BEGIN
  IF(v_a>v_b) THEN
  v_ret := v_a;
  ELSE
    v_ret := v_b;
    END IF;
    v_temp := v_temp+1;
   END
   
--调用带参存储过程
 DECLARE
   v_a NUMBER := 3;
   v_b NUMBER := 4;
   v_ret NUMBER;
   v_temp NUMBER :=5;
   BEGIN
     p(v_a,v_b,v_ret,v_temp);
     dbms_output.put_line(v_ret);
     dbms_output.put_line(v_temp);
     END;
   --再写PL/SQL程序时的细节,每一句话结束后都要写";"
   -- 尤其是以下三个一定不要忘记加";" end if; end loop; end;

   --创建一个带参数的存储过程
CREATE OR REPLACE PROCEDURE swap(
       p1 IN OUT NUMBER,
       p2 IN OUT NUMBER
       )
  IS
    v_temp NUMBER;
BEGIN
     v_temp:= p1;
      p1 :=p2;
     p2 := v_temp;
     END;
 
--调用带参存储过程
DECLARE
   num1 NUMBER:=10;
   num2 NUMBER:=20;
BEGIN
    swap(num1,num2);
    dbms_output.put_line('num1 = '||num1);
    dbms_output.put_line('num2 = '||num2);
    END;
0 0
原创粉丝点击