`
wm1990315
  • 浏览: 4989 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

plsql笔记

阅读更多

declare
 v_name varchar2(20);
begin
 select ename into v_name from emp where empno = 7369;
 dbms_output.put_line(v_name);
end;

declare
 varr varchar2(100);
 begin
 varr := 'hello'' world!';
 dbms_output.put_line(varr);
 end;
 
 declare
 v_name emp.ename%type;
begin
 select ename into v_name from emp where empno = 7369;
 dbms_output.put_line(v_name);
end;

var v_ename varchar2(20);
declare
begin
 select ename into :v_ename from emp where empno = 7369;
 dbms_output.put_line(:v_ename);
end;

declare
vaa varchar2(200) :='hello girl';
begin
   vaa:=initcap(vaa);
   dbms_output.put_line(vaa);
end;

declare
vaa varchar2(200) :='hello girl';
begin
   vaa:=replace(vaa,' ','_');
   dbms_output.put_line(vaa);
end;

declare
vaa date := sysdate;
begin
   dbms_output.put_line(to_char(vaa,'yyyy-mm-dd hh24:mi:ss'));
end;

--取最大值,--最小值 least()---
declare
begin
   dbms_output.put_line(greatest(1,2,3));
end;

declare
    x number;
  begin
  x:=10;
   declare
   y number;
   begin
   y:=15;
   x:=x+y;
   dbms_output.put_line('x='||x);
 end;
   dbms_output.put_line('y='||y);
end;

<<outerr>>
declare
    x number :=10;
  begin
   declare
   x number;
   begin
   x:=15;
   x:=x+10;
   dbms_output.put_line('x='||x);
   dbms_output.put_line('x='||outerr.x);
 end;
end;

--求次方--
declare
vaa number :=2;
begin
    dbms_output.put_line(vaa**3);
end;

--select into 查询结果只能返回一条数据 --
declare
    v_sal emp.sal%type;
    v_empno emp.empno%type :=7369;
    v_count number;
begin
 select count(sal) into v_count from emp where empno = v_empno;
 if v_count=1 then
   select sal into v_sal from emp where empno = v_empno;
   dbms_output.put_line(v_sal);
 end if; 
end;


--游标 --
declare
v_empno emp.empno%type := 7369;
begin
    delete emp where empno=v_empno;
 if sql%notfound then
    dbms_output.put_line("not found!");
 end if; 
end;

declare
v_empno emp.empno%type := 7369;
v_sal emp.sal%type;
begin
    select sal into v_sal from emp where empno = v_empno;
 if v_sal<400 then
    dbms_output.put_line('aaaaaa');
 elsif v_sal <800 then
    dbms_output.put_line('bbbbbbbbb');   
 else
  dbms_output.put_line('xxxxxxx');
 end if; 
end;


declare
v_empno emp.empno%type := 7369;
v_sal emp.sal%type;
begin
    select sal into v_sal from emp where empno = v_empno;
  if nvl(v_sal,0)<400 then
    dbms_output.put_line('aaaaaa');
   else if v_sal <800 then
           dbms_output.put_line('bbbbbbbbb');      
        else
           dbms_output.put_line('xxxxxxx');
        end if; 
  end if;
end;

--case语句--
declare
v_deptno emp.deptno%type;
v_empno emp.empno%type := 7369;
begin
    select deptno into v_deptno from emp where empno = v_empno;
 case v_deptno
 when 30 then
   dbms_output.put_line('bbbbbbbbb');
 when 20 then
   dbms_output.put_line('ccccccccc');    
    else
    dbms_output.put_line('xxxxx');
   end case;   
end;
--case表达式--
declare
v_deptno emp.deptno%type;
v_empno emp.empno%type := 7369;
v_sal emp.sal%type;
begin
    select deptno ,sal into v_deptno, v_sal from emp where empno = v_empno;
v_sal := case v_deptno
            when 30 then v_sal*1.5
            when 20 then v_sal*2
            else v_sal*0.5 
         end;   
dbms_output.put_line(v_sal);
end;

--loop--
declare
v_deptno emp.deptno%type;
v_empno emp.empno%type := 7369;
v_sal emp.sal%type;
begin
    loop
        v_empno:=v_empno+1;
       exit when v_empno >7372;
    end loop;
dbms_output.put_line(v_empno);    
      
end;

--while--
declare
 i number :=10;
 begin
  while i>0 loop
      i:=i-1;
      dbms_output.put_line(i);  
  end loop;
  end;
     
--for loops--
declare
 begin
  for i in 1..10 loop
    dbms_output.put_line(i);  
end loop;
  end;

--record--
declare
 type emp_rec_type is record
    (ename emp.ename%type,
     job emp.job%type,
     sal emp.sal%type);
     emp_rec emp_rec_type;
begin
    emp_rec.ename :='3455';
    emp_rec.job :='324';  
    emp_rec.sal :='345'; 
    dbms_output.put_line('emp_rec.sal ='||emp_rec.sal);   
end;

--rowtype--
declare
  emp_rec emp%rowtype;
  v_empno number := 7369;
begin
   select * into emp_rec from emp where emp.empno = v_empno; 
   dbms_output.put_line(emp_rec.sal);   
end;

--index 数组--
declare
   type emp_ename is table of
     emp.ename%type index  by pls_integer;
     v_emp_ename emp_ename;
begin
   for i in 1..14 loop
       select ename into v_emp_ename(i) from emp where empno = 7369;
   end loop;
   for i in v_emp_ename.first..v_emp_ename.last loop
      dbms_output.put_line(v_emp_ename(i)); 
   end loop;
   
end;

declare
   type emp_ename is table of
     emp%rowtype index  by pls_integer;
     v_emp_ename emp_ename;
begin
   for i in 1..14 loop
       select * into v_emp_ename(i) from emp where empno = 7369;
   end loop;
   for i in v_emp_ename.first..v_emp_ename.last loop
      dbms_output.put_line(v_emp_ename(i).ename); 
   end loop;
   
end;

--游标 cursor 定义
--open<分配内存,执行sql,指向第一条数据 
--fetch<把游标的数据放入变量,游标下移--
--close<关闭游标 c_emp.ename is error
--loop
declare
   cursor c_emp is
     select * from emp;
   v_emp emp%rowtype;
begin
   open c_emp;
   loop   
       dbms_output.put_line(v_emp.ename);
       dbms_output.put_line(c_emp%rowcount);
       fetch c_emp into v_emp;
       exit when c_emp%notfound;
   end loop;
   close c_emp;
end;  

--while
declare
   cursor c_emp is
     select * from emp;
   v_emp emp%rowtype;
begin
   open c_emp;
   fetch c_emp into v_emp;
   while c_emp%found loop
      dbms_output.put_line(v_emp.ename);
      fetch c_emp into v_emp;    
   end loop; 
   close c_emp;
end;
--if
declare
   cursor c_emp is
     select * from emp;
begin
  --if c_emp%isopen=false then
  --  open c_emp;
 -- end if;
  for v_emp in c_emp loop
      dbms_output.put_line(v_emp.ename);   
   end loop; 
   --close c_emp;
end;

--带参数的游标

declare
   cursor c_emp(c_empno number) is
      select * from emp where empno = c_empno;
begin
   for v_emp in c_emp(7369) loop
       dbms_output.put_line(v_emp.ename);     
   end loop;
end;  

--exception--

declare
  emp_rec emp%rowtype;
  v_empno number := 7369;
begin
   select * into emp_rec from emp where emp.empno = v_empno; 
   dbms_output.put_line(emp_rec.sal);   
   exception
    when too_many_rows then
    null;
end;

---过程
create or replace procedure getsal(v_empno number)
is
 v_sal emp.sal%type;
 begin
  select sal into v_sal from emp where empno=v_empno;
  dbms_output.put_line(v_sal);

end;
--函数,在sql里调用不能有输出参数,只能返回sql支持的数据类型
create or replace function getename(v_empno number ,v_ename out emp.ename%type)
return emp.ename%type
is
 begin
  select ename into v_ename from emp where empno=v_empno;
  return v_ename;
end;
begin

dbms_output.put_line();
end;


--package----

create or replace package changeemp
   is
    function test(v_enpno number);
end changeemp;    

create or replace package body changeemp
 is
   function test(v_enpno number)
   is
     begin
     end;
  end changeemp;  

-- 重载--

create or replace procedure test1(v_enpno number)
is
 begin
 getsal(7369);
 end;
 
--读写文件
grant create any directory to scortt;
create  directory   "DIR_PATH"   AS 'c:\';
grant  read  on  directory  DIR_PATH  TO user ;
grant  write on directory   DIR_PATHE  TO user ;
declare
  cursor c1 is select * from emp;
  filehandle utl_file.file_type;
  begin
   for rec in c1 loop
    dbms_output.put_line(rec.ename);
  filehandle :=  utl_file.fopen('c:\','1.txt','w');
  utl_file.put_line(filehandle,rec.ename);
   end loop;
    utl_file.fclose(filehandle);
 end;  
 
 --
create or replace procedure proc2 is
 pragma
  autonomous_transaction;
  dept_id number := 90;
 begin
  update
  insert
 commit;
end proc2;

--触发器
create or replace trigger trigger1
 before
  insert
  on emp
  declare
    v_msg varchar2(40);
  begin
    if to_char(sysdate,'hh24') not between '08' and '18' then
         v_msg:='cant insert';
         raise_application_error(-20201,v_msg);
   end if;
   end;     

分享到:
评论

相关推荐

    PLSQL笔记.doc

    PL/SQL是一种用于Oracle数据库的结构化查询语言扩展,它结合了SQL的数据操作功能和过程编程语言的控制结构。以下是对标题和描述中提到的PL/SQL知识点的详细解释: 1. **数据检索**: - **单行数据检索**:可以使用...

    达内的plsql笔记和代码

    达内的PLSQL笔记和代码资料,无疑是学习和提升PLSQL技能的重要资源。 在`PLSQL_note.pdf`中,你可能会找到以下知识点: 1. **PLSQL基础**:包括PLSQL的结构,如声明部分、执行部分和异常处理部分,以及变量、常量...

    PLSQL笔记(EFRIOO&GUOH)1.doc

    根据给定的信息,本文将对《PLSQL笔记(EFRIOO&GUOH)1.doc》中的主要内容进行详细解析,涵盖数据库检索、数据操纵、事务控制、控制结构、复合数据类型等多个方面。 ### 一、检索单行数据 #### 1.1 使用标量变量接受...

    PLSQL笔记-从hello word到触发器,包,游标高级应用

    以上只是PLSQL笔记中的部分内容,实际笔记会更详细地介绍每部分的概念、语法和实例,帮助你深入理解并熟练运用PLSQL进行数据库编程。通过学习这些笔记,你将能够掌握PLSQL的高级应用,从而在Oracle数据库开发中...

    PLSQL笔记(EFRIOO&GUOH)

    本笔记主要由EFRIOO和GUOH共同整理,涵盖了PLSQL的基础概念、数据检索、数据操纵以及SQL游标等关键知识点。 1. **检索单行数据** - **使用标量变量接受数据**:在PLSQL中,可以声明标量变量如`VAR VARCHAR2(100)`...

    PLSQL笔记(EFRIOO)

    ### PL/SQL笔记知识点概述 #### 一、PL/SQL块中的SQL语句限制 - **可嵌入的语句**:在PL/SQL块中可以直接嵌入`SELECT`、`DML`(如`INSERT`、`UPDATE`、`DELETE`)以及事务控制语句(如`COMMIT`、`ROLLBACK`、`...

    PLSQL 学习笔记

    【PLSQL学习笔记】 PLSQL(Procedural Language/Structured Query Language)是Oracle数据库系统中的一个强大编程语言,它结合了SQL的查询能力与过程式编程语言的特点,为数据库开发提供了丰富的功能。这篇学习笔记...

    PLSQL笔记精华,个人整理

    PL/SQL是Oracle数据库的一种编程语言,主要用于处理和操纵数据。它是SQL的扩展,增加了流程控制、异常处理和数据类型等功能,使得在数据库环境中编写复杂程序成为可能。 在PL/SQL块中,你可以直接嵌入SELECT、DML...

    PLSQL笔记整理

    ### PL/SQL 使用技巧与心得 #### 检索单行数据 - **使用标量变量接受数据**:标量变量用于存储单个值。在检索单行数据时,可以通过`SELECT ......例如: ```sql DECLARE v_name VARCHAR2(50);...

    PLSQL学习笔记(1-7)

    本学习笔记涵盖了从基础到进阶的PLSQL知识,旨在帮助读者全面理解和掌握这一强大的数据库编程工具。 1. **基础概念** - **PL/SQL块**:PLSQL程序的基本结构是块,包括声明部分、执行部分和异常处理部分。 - **...

    PLSQL学习笔记

    **PLSQL学习笔记** PL/SQL(Procedural Language/Structured Query ...本笔记中的"PLSQL笔记.doc"文件可能包含了更详尽的示例和练习,可以帮助你进一步巩固这些概念。建议结合实际数据库环境进行实践,以加深理解。

    PLSQL上课笔记

    PLSQL上课笔记和版书

    oracle plsql编程学习笔记

    ### Oracle PL/SQL编程核心知识点解析 #### 一、创建基本表与操作 在Oracle数据库中,使用PL/SQL进行数据库编程前,首先需掌握如何创建表与进行基本的CRUD(创建、读取、更新、删除)操作。示例中的`CREATE TABLE`...

    Oracle9iSQL/PLSQL学习笔记

    Oracle9i SQL/PLSQL 学习笔记 自己照着书学习时候的笔记。TXT的,比较简单,希望对大家学习有帮助。 其中0 mysqlCmd.txt是我自学mysql时候的笔记,是有关于命令的。大家看看有帮助没有。 都比较精华和简单,适合...

    plsql学习文件

    通过这份"PLSQL笔记",初学者可以系统地了解和掌握PL/SQL的基本概念、语法和实践技巧,进一步提升在数据库管理领域的专业技能。在实际学习过程中,结合实例进行练习,将理论知识与实际操作相结合,能更有效地巩固和...

    plsql的 课堂 笔记

    plsql 课堂笔记 ,需要的 人可供参考之用

    PLSQL语法总结笔记

    ### PLSQL语法总结笔记 #### 一、数据类型与变量定义 **1. 字符型** - **CHAR**: 固定长度字符类型。 - **VARCHAR2**: 变长字符类型,最大长度可达4000字节。 - **LONG**: 存储长文本数据,最多2000个非汉字...

    oracle plsql课堂笔记

    ```plsql DECLARE v_name VARCHAR2(64) := 'jack'; BEGIN NULL; -- 这里使用NULL作为占位符,不执行任何操作 DBMS_OUTPUT.PUT_LINE(v_name); -- 输出变量值 END; ``` - **分析**:这个例子展示了如何声明一个变量...

    转:PLSQL开发笔记和小结

    这篇"PLSQL开发笔记和小结"可能涵盖了许多关于PLSQL的基础知识和高级技巧,虽然具体的内容无法在此提供,但我们可以根据常规的PLSQL学习路线来探讨一些关键知识点: 1. **基本语法**:PLSQL由声明部分、执行部分和...

Global site tag (gtag.js) - Google Analytics