ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

oracle pl/sql基本语法

2020-02-22 11:03:07  阅读:259  来源: 互联网

标签:dbms end put emp sql oracle output line pl


---pl/sql编程语言
---pl/sql编程语言是对sql语言的扩展,使得sql语言具有过程化编程的特性。
---pl/sql编程语言比一般的过程化编程语言,更加灵活高效。
---pl/sql编程语言主要用来编写存储过程和存储函数等。

---声明方法
---赋值操作可以使用:= 也可以使用into查询语句赋值
declare
    i number(2) := 10;
    s varchar2(10) := '小明';
    ena emp.ename%type;---引用型变量
    emprow emp%rowtype;---记录型变量
begin
    dbms_output.put_line(i); -- 10
    dbms_output.put_line(s); -- 小明
    select ename into ena from emp where empno = 7788;
    dbms_output.put_line(ena); -- SCOTT
    select * into emprow from emp where empno = 7788;
    dbms_output.put_line(emprow.ename || '的工作为:' || emprow.job); -- SCOTT的工作为:ANALYST
end;
--- pl/sql中的if判断
-- 范例 1:如果从控制台输入 1 则输出我是 1
declare
  pnum number := #
begin
  if pnum = 1 then
    dbms_output.put_line('我是1');
  end if;
end;
-- 范例 2:如果从控制台输入 1 则输出我是 1否则输出我不是 1
declare
  mynum number := #
begin
  if mynum = 1 then
    dbms_output.put_line('我是1');
  else
    dbms_output.put_line('我不是1');
  end if;
end;
-- 范例 3:判断人的不同年龄段 18岁以下是未成年人,18岁以上 40以下是成年人,40以上是老年人
declare
  mynum number := #
begin
  if mynum < 18 then
    dbms_output.put_line('未成年人');
  elsif mynum >= 18 and mynum < 40 then
    dbms_output.put_line('中年人');
  elsif mynum >= 40 then
    dbms_output.put_line('老年人');
  end if;
end;
---pl/sql中的loop循环
---用三种方式输出1到10个数字
---while循环
declare
  i number(2) := 1;
begin
  while i<11 loop
     dbms_output.put_line(i);
     i := i+1;
  end loop;  
end;
---exit循环
declare
  i number(2) := 1;
begin
  loop
    exit when i>10;
    dbms_output.put_line(i);
    i := i+1;
  end loop;
end;
---for循环
declare

begin
  for i in 1..10 loop
     dbms_output.put_line(i);  
  end loop;
end;

游标 Cursor

  语法:
    CURSOR 游标名 [ (参数名 数据类型,参数名 数据类型,...)] IS SELECT 语句;
    例如: cursor c1 is select ename from emp;
  游标的使用步骤:
    打开游标: open c1; (打开游标执行查询)
    取一行游标的值:fetch c1 into pjob; (取一行到变量中)
    关闭游标: close c1;(关闭游标释放资源)
    游标的结束方式 exit when c1%notfound
    注意: 上面的 pjob 必须与 emp表中的 job 列类型一致:
    定义:pjob emp.empjob%type;

---游标:可以存放多个对象,多行记录。
---输出emp表中所有员工的姓名
declare
  cursor c1 is select * from emp;
  emprow emp%rowtype;
begin
  open c1;
     loop
         fetch c1 into emprow;
         exit when c1%notfound;
         dbms_output.put_line(emprow.ename);
     end loop;
  close c1;
end;

-----给指定部门员工涨工资
declare
  cursor c2(eno emp.deptno%type) 
  is select empno from emp where deptno = eno;
  en emp.empno%type;
begin
  open c2(10);
     loop
        fetch c2 into en;
        exit when c2%notfound;
        update emp set sal=sal+100 where empno=en;
        commit;
     end loop;  
  close c2;
end;
----查询10号部门员工信息
select * from emp where deptno = 10;

标签:dbms,end,put,emp,sql,oracle,output,line,pl
来源: https://www.cnblogs.com/roadlandscape/p/12344502.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有