Oracle PL/SQL 编程基础 实例

标签: oracle pl sql | 发表时间:2014-05-12 17:27 | 作者:fangchao3652
分享到:
出处:http://blog.csdn.net
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;
作者:fangchao3652 发表于2014-5-12 17:27:25 原文链接
阅读:109 评论:0 查看评论

相关 [oracle pl sql] 推荐:

Oracle PL/SQL 编程基础 实例 2

- - CSDN博客数据库推荐文章
if  循环  控制语句 . --编写一个过程,可以 输入一个雇员名,如果该雇员的工资低于2000就给他增加10%.           --判断. --======####案例s33 编写一个过程,可以 输入一个雇员名,如果该雇员的补助不是0就在原基础上增加100,如果是0就加200.           --判断.

Oracle PL/SQL 编程基础 实例

- - CSDN博客数据库推荐文章
1, exec 过程名 (参数,.  call 过程名 (参数  ).   dbms_output.put_line('姓名:'||v_ename);.                           --执行部分.  --------------函数 -------.    -------包------------由包规范和包体组成的.

Oracle PL/SQL 非预定义异常、自定义异常处理、RAISE_APPLICATION_ERROR

- - CSDN博客互联网推荐文章
Oracle有三种类型的异常错误:. 1. 预定义(Predefined)异常. ORACLE预定义的异常情况大约有24个. 对这种异常情况的处理,无需在程序中定义,由ORACLE自动将其引发. 2. 非预定义(Predefined)异常. 即其他标准的ORACLE错误. 对这种异常情况的处理,需要用户在程序中定义,然后由ORACLE自动将其引发.

不安装Oracle客户端情况下用PL/SQL连接远程服务器

- - 数据库 - ITeye博客
首先下载免安装的客户端instantclient_12_1,. 解压缩 instantclient_12_1 到 D:\Oracle\instantclient_12_1(解压到任意目录即可). 在文件夹内建立目录, /NETWORK/ADMIN. 在该目录下,新建文件tnsnames.ora. 在thsnames.ora中写入:.

PL/SQL动态SQL(原创)

- - ITeye博客
使用动态SQL是在编写PL/SQL过程时经常使用的方法之一. 很多情况下,比如根据业务的需要,如果输入不同查询条件,则生成不同的执行SQL查询语句,对于这种情况需要使用动态SQL来完成. 再比如,对于分页的情况,对于不同的表,必定存在不同的字段,因此使用静态SQL则只能针对某几个特定的表来形成分页.

PL/SQL学习汇总

- - CSDN博客数据库推荐文章
sql是非过程语言,在编程中总是会用到过程化控制,PL/SQL就是提供了过程化控制的语言来弥补SQL语言的这一点缺陷. PL/SQL 语句在后面的执行中  pl/sql语句由 PL/SQL引擎执行,SQL语句由 sql引擎执行. PL/SQL 集成了过程化与SQL一起使用, 提高了性能,因为一个过程执行完成后,.

PL/SQL流程控制(原创)

- - ITeye博客
类似于高级语言,流程控制语句是PL/SQL语言的重要组成部分. 这些流程控制语句使得PL/SQL加大了代码的灵活性和多样性,大大简化了程序的编写. 下面将列出流程控制语句并给出具体事例. 判断condition是否成立,成立就执行IF 与END IF 之间的语句. 例:输入员工编号,查询其工资,如果他们的职位是CLERK,则工资增加%,再显示修改前后的工资数.

PL/SQL Developer 9.06.1665 简体中文注册版

- - 快乐无极的博客
此版是最新9.06.1665版+汉化包,先安装主程序,再安装汉化包,内附注册码. 仅供技术交流和测试之用,如做其它用途,请支持正版. Developer是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发. 如今,有越来越多的商业逻辑和应用逻辑转向了Oracle. Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分.

利用pl/sql执行计划评估SQL语句的性能简析

- - Oracle - 数据库 - ITeye博客
    一段SQL代码写好以后,可以通过查看SQL的执行计划,初步预测该SQL在运行时的性能好坏,尤其是在发现某个SQL语句的效率较差时,我们可以通过查看执行计划,分析出该SQL代码的问题所在. 那么,作为开发人员,怎么样比较简单的利用执行计划评估SQL语句的性能呢. 总结如下步骤供大家参考:. 1、 打开熟悉的查看工具:PL/SQL Developer.

Oracle SQL性能优化

- - 数据库 - ITeye博客
(1)      选择最有效率的表名顺序(只在基于规则的优化器中有效):. ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表. 如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表.