zoukankan      html  css  js  c++  java
  • Oracle PL/SQL 编程基础 实例

    create table mytest(name varchar(20),password varchar(30));


    create or replace procedure sp_pro2 is 
    begin 
    insert into mytest values('fc','123');
    end;




    查看错误信息


    show error


    怎样调用该过程:


    1。 exec 过程名 (參数,。。)
    2.  call 过程名 (參数  )




    set server output on


    begin 
    dbms_output.put_line('helloe');
    end;


    ---------------------




    declare 
      v_ename varchar(20);
    begin 
        select ename into v_ename from emp where empno=&aa;
      dbms_output.put_line('姓名:'||v_ename);
      end;






      -----------
      create procedure sp_pro3 (spName varchar2,newSal number) is
      begin  
                              --运行部分
         update emp set sal=newSal where ename=spName;
         end;
         --dioyong 
         call sp_pro3('scott','8000');
     --------------函数 -------
     
        CREATE or replace  function sp_fun1(spName varchar2) return 
        number is yearsal number(7,2);
         begin select sal*12+nvl(comm,0) into yearsal from emp 
           where ename=spName;
           return yearsal;
           end;
        
        --diaoyong
        var abc number;
        call sp_fun1('SCOTT') into : abc;
        ---------------------------
        
       -------包------------由包规范和包体组成的
       --创建一个包sap_pack1 
       --声明该包有一个过程和一个函数
       create or replace package sp_pack1 is
         procedure update_sal(spName varchar2,newsal number);
         function  annual_income(spName varchar2) return number;
         end;
         
         --创建包体---
             create or replace package body sp_pack1 is
              
             procedure update_sal(spName varchar2,newsal number) is
         begin  
         update emp set sal=newsal where ename=spName;
         end;
         
          function   annual_income(spName varchar2) return number
               is yearsal number(7,2);
         begin   select sal*12+nvl(comm,0) into yearsal from emp 
           where ename=spName;
           return yearsal;
        end;
        end;


     ---调用 ----
            call sp_pack1.update_sal('SCOTT',9000);










    ----------定义并使用变量---================================
         --  标量类型 scalar 
          v_ename varchar(10);
          v_sal  number(6,2):=5.4
          v_data date;
          v_valid  boolean not null default false;
                           ---输入员工号。显示 name sal tax
                           declare 
                             v_tax_rate number (3,2):=0.03;
                           -- v_ename varchar2(5);
                             v_ename  emp.ename%type;
                            -- v_sal  number(7,2);
                             v_sal  emp.sal%type;
                              v_tax_sal number (7,2);
                           begin  
                               select ename,sal into v_ename,v_sal from emp where empno=&no;
                               --计算所得税 
                                 v_tax_sal:=v_sal*v_tax_rate;
                               --输出
                                dbms_output.put_line('name:'||v_ename||'工资'||v_sal  ||'交税:'||v_tax_sal);
                               end;


    --复合类型  composite
          ----pl/sql 记录  类似于高级语言的结构体 
                  --定义一个plsql 记录类型  emp_record_type
                      declare
                    type   emp_record_type is record (aname emp.ename%type,salary emp.sal%type,title emp.job%type);
                    --定义了一个 变量 sp_record  这个变量的类型是emp_record_type                                                                           
                      sp_record emp_record_type;
                   begin 
                     select ename,sal,job into  sp_record from  emp where empno=7788;
                   dbms_output.put_line('员工名:'||sp_record.aname);
                   end;
          --------pl/sql  表  相当于该机语言里的数组 
                --定义一个plsql 表类型  emp_table_type   
                      declare 
                      type emp_table_type is table  of emp.ename%type index by  binary_integer;
                        sp_table emp_table_type;
                      begin 
                         select ename into  sp_table(0)  from emp where empno=7788;
                         dbms_output.put_line('员工名--》'||sp_table(0)); 
                      end;
    --參照类型
            ---1游标变量
                   --实例一  输入部门号。显示全部的员工姓名和他的工资
                           declare
                                 --定义游标类型
                                 type sp_emp_cursor is ref cursor;
                                  --定义游标变量
                                 test_cursor sp_emp_cursor; 
                                 --定义变量
                                 v_ename emp.ename%type;
                                 v_sal emp.sal%type;
                             begin 
                                  --运行
                                  --把test_cursor 和select 结合
                                open test_cursor for select ename,sal  from emp where deptno=&depno;
                                --循环取出
                                loop
                                  fetch test_cursor into v_ename,v_sal;
                                  --推断是否test——cursor 为空
                                   exit when  test_cursor%notfound;
                                  dbms_output.put_line('员工名->'||v_ename||'工资->'||v_sal); 
                                end loop;
                             end;
  • 相关阅读:
    [BZOJ 4710] 分特产
    洛谷 P4827 [国家集训队] Crash 的文明世界
    Test 7.12 T2
    [洛谷 P1377] TJOI2011 树的序
    [洛谷 P1013] NOIP1998 提高组 进制位
    ajax2
    Ajax
    javascript下兼容都有哪些
    获取类名 封装 getStyle
    作用域
  • 原文地址:https://www.cnblogs.com/wzjhoutai/p/6729634.html
Copyright © 2011-2022 走看看