ITPub博客

首页 > 数据库 > Oracle > 马士兵PLSQL笔记

马士兵PLSQL笔记

原创 Oracle 作者:d_ball_apple 时间:2014-10-06 13:39:11 0 删除 编辑

set serveroutput on;  开启显示
begin
end;
/     开始结束;

declare 申明变量,变量名 默认 V_  开头

v_num number := 0;
赋值;

exception
 when others then
     dbms_output.put_line('error');  获取任何异常并处理;

变量类型:
binary_integer  整数,一般用来计数
number
char
varchar2
date
long
boolean   --》 可以取 true,false,null


constant 相当于java里面的 final

v_pi constant number(3,2)

not null 非空

v_name varchar2(20)not null :='MyName';

||  连接符

dbms_output.put_line('v_temp value: ' || v_temp);
dbms_output.put_line();不能输出boolean值


-- 为PLSQL里面的注释
%type 

declare
  v_empno emp.empno%type
  v_empno1 v_empno%type
begin
  dbms_output.put_line('test');
end;(type可以根据表类型,动态改变,相当于一个属性)

table 变量类型(相当于数组)

type type_table_emp_empno is table of emp.empno%type index by binary_integer;(type 定义一个类

型)
v_empnos type_table_emo_empno;

record变量类型(视频里面说像java里面的类,但个人认为就是C语言里面的结构体)
declare
 type type_record_dept is record
(
    deptno dept.deptno%type,
    dname dept.dname%type
);
v_temp type_record_dept;



rowtype属性
v_temp dept%rowtype;将dept表的类型全对应保存到v_temp中,v_temp即为 record 类型


plsql里面 select 有且只有一条记录

select ename,sala into v_ename,v_sal from emp where e,pno = 7369;

select * into v_temp(rowtype) from emp where e,pno =

insert value里面可以使用申明的变量
commit;提交事物。

sql%rowcount 影响了多少行   sql 刚刚执行的sql语句


ddl语句执行需要在前加入 execute immediate


begin
  execute immediate ‘create table T (nnn  varchar2(20) default ''aaa'')’;
end;


if语句


declare
 v_sal emp.sal%type;
begin  
 select sal into v_sal from emp
    where empno = 7369;
if(v_sal < 1200) then
     dbms_output.put_line('low');
elseif(v_sal < 2000) then
  dbms_output.put_line('middle');
else
 dbms_output.put_line('high');
end if;
end;


循环
1.
declare
 i binary_integer := 1;
begin  
 loop
  dbms_output.put_line(i);
  i := i + 1;
  exit when ( i >= 11);
 end loop;
end;

2.
declare
 i binary_integer := 1;
begin  
  while j < 11 loop
  dbms_output.put_line(i);
  i := i + 1;
  
 end loop;
end;

3.

declare
 i binary_integer := 1;
begin  
  for k in 1..10 loop
  dbms_output.put_line(i);
 end loop;
 for k in  reverse 1..10 loop(逆序10--1)
  dbms_output.put_line(i);
 end loop;
end;



异常:
exception
  when too_many_rows then
    dbms_output.put_line('select 返回记录行数过多');
 
 when no_date_found then
     dbms_output.put_line('select 没有返回记录');

 when others then
     dbms_output.put_line('error');


create table  errorlog
(
 id number primary key,
 errcode number,
 errmsg varchar2(1024),
 errdate date
)

SQLCODE 错误代码
SQKERRM 错误信息 :关键字


至此 在有其他语言的基础下,已经可以掌握plsql语法

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28889722/viewspace-1290011/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 传输数据库
请登录后发表评论 登录
全部评论

注册时间:2013-05-15

  • 博文量
    39
  • 访问量
    84861