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;

Oracle PL/SQL 编程基础 实例的更多相关文章

  1. Oracle Pl/SQL编程基础

    Pl/SQL简介 提高应用程序的运行性能, 提供模块化的程序设计, 自定义标示符, 具有过程语言控制结构, 良好的兼容性, 处理运行错误. Pl/SQL语言基础 sql是关系数据库的基本操作语言. s ...

  2. oracle PL/SQL编程基础知识

    在oracle中使用pl/sql来扩展SQL的功能,使得SQL能够更加的灵活,功能更加强大,效率更高.pl/sql让sql也能执行判断,循环等操作.主要记录一下pl/sql的基本语法和基本条件判断语句 ...

  3. Oracle数据库编程:PL/SQL编程基础

    2.PL/SQL编程基础: PL/SQL块:        declare        定义部分        begin        执行部分        exception        异 ...

  4. ORACLE PL/SQL编程详解

    ORACLE PL/SQL编程详解 编程详解 SQL语言只是访问.操作数据库的语言,并不是一种具有流程控制的程序设计语言,而只有程序设计语言才能用于应用软件的开发.PL /SQL是一种高级数据库程序设 ...

  5. [强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!)

    原文:[强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!) [强烈推荐]ORACLE PL/SQL编程详解之七: 程序包的创建与应用(聪明在于学习,天 ...

  6. ORACLE PL/SQL编程之八:把触发器说透

    原文:ORACLE PL/SQL编程之八:把触发器说透 ORACLE PL/SQL编程之八: 把触发器说透 大家一定要评论呀,感谢!光发表就花了我将近一个下午. 本篇主要内容如下: 8.1 触发器类型 ...

  7. ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!)

    原文:ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!) ORACLE PL/SQL编程之六: 把过程与函数说透(穷追猛打,把根儿都拔起!)   继上篇:ORACLE P ...

  8. [推荐]ORACLE PL/SQL编程详解之三:PL/SQL流程控制语句(不给规则,不成方圆)

    原文:[推荐]ORACLE PL/SQL编程详解之三:PL/SQL流程控制语句(不给规则,不成方圆) [推荐]ORACLE PL/SQL编程详解之三: PL/SQL流程控制语句(不给规则,不成方圆) ...

  9. [推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序设计简介(千里之行,始于足下)

    原文:[推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序设计简介(千里之行,始于足下) [推荐]ORACLE PL/SQL编程详解之一: PL/SQL 程序设计简介(千里之行,始于足下 ...

随机推荐

  1. apacheBench对网站进行压力测试

    apacheBench对网站进行压力测试 分类: 学习 2014-02-19 10:35 4154人阅读 评论(1) 收藏 举报 apacheBench压力测试 Apache Benchmark下载 ...

  2. redis lpop key 当key不存在时,返回nil , 监测redis执行语句是否正常执行

    Lpop key 返回值: 列表的头元素. 当key 不存在时, 返回 nil . 需求:  开发在执行 lpop key 时, 出现问题 , 执行语句卡住, 不能执行下去 , 需对此做一个监测 由于 ...

  3. python函数中把列表(list)当参数时的"入坑"与"出坑"

    在Python函数中,传递的参数如果默认有一个为 列表(list),那么就要注意了,此处有坑!! 入坑 def f(x,li=[]): for i in range(x): li.append(i*i ...

  4. IDEA的maven项目中静态文件编译的路径问题(未测试)

    转自:http://www.cnblogs.com/signheart/p/6625126.html IDEA的maven项目中,默认源代码目录下的xml等资源文件并不会在编译的时候一块打包进clas ...

  5. 基于 html5 geolocation来获取经纬度地址(copy)

    geolocation来获取经纬度地址 以前如果要获取互联网用户所在地都是根据用户的IP地址来获取地理位置,这样获取到的数据和真实数据有很大的偏差.为了获取更加精确的位置,可以使用了html5的geo ...

  6. PowerDesigner 12小技巧-pd小技巧-pd工具栏不见了-pd修改外键命名规则-pd添加外键

    PowerDesigner 12小技巧-pd小技巧-pd工具栏不见了-pd修改外键命名规则-pd添加外键 1. 附加:工具栏不见了 调色板(Palette)快捷工具栏不见了PowerDesigner ...

  7. Linux基础之常用命令篇

    一.命令的基本格式 [root@localhost~] root为用户名 -表示当前所在位置 localhost主机名 ‘#’超级用户 '$" 普通用户 命令的基本格式: 命令 [选项] [ ...

  8. 《JAVA与模式》之适配器模式(转载)

    适配器模式比较简单,偷个懒,直接转载一篇. 个人理解: * 类适配器是通过继承来完成适配 * 对象适配器是通过传递对象来完成适配 * 不管哪种,其实都是通过引用特殊接口的对象来完成特殊接口的适配调用 ...

  9. POJ 3670 Eating Together 二分解法O(nlgn)和O(n)算法

    本题就是一题LIS(最长递增子序列)的问题.本题要求求最长递增子序列和最长递减子序列. dp的解法是O(n*n),这个应该大家都知道.只是本题应该超时了. 由于有O(nlgn)的解法. 可是因为本题的 ...

  10. jquery.dataTables的用法

    写页面前端时,使用表格的插件可以快速漂亮的排版.本例子中使用jquery.dataTables来处理table.直接来点干货 html代码如下 <table cellpadding=" ...