PLSQL存储过程常用基础语句记录

declare
–定义变量: 变量名 类型
dname_ varchar2(40);
dname_2 dept.dname%type;
–定义表的全部字段对象
dept_1 dept%rowtype;
/*
定义变量
*/
dno_ number(4);
begin
–变量赋值
dno_ := 20;
–执行sql
select dname into dname_2 from dept; --where deptno = dno_;
select * into dept_1 from dept; --where deptno = dno_;
–输出
dbms_output.put_line(dname_2);
dbms_output.put_line(dept_1.deptno);
dbms_output.put_line(dept_1.dname);
dbms_output.put_line(dept_1.loc);
end;

declare
deptno_ number(4);
deptname_ varchar2(20);
loc_ varchar2(20);
begin
deptno_ :=30;
–选择结构
if (deptno_ = 10) then
select dname into deptname_ from dept where deptno=deptno_;
elsif(deptno_ = 20) then
select loc into loc_ from dept where deptno=deptno_;
else
dbms_output.put_line(‘没有值’);

–结束选择结构
end if;
dbms_output.put_line(deptname_);
dbms_output.put_line(loc_);
end;

declare
–赋初始值
tno_ number(20) default 10;
begin
–赋值
tno_ := 20;
case
when (tno_=10) then
dbms_output.put_line(‘这是10’);
when (tno_=20) then
dbms_output.put_line(‘这是20’);
end case;
end;

–循环结构:loop
declare
i number(4) default 5;
begin
–开始循环
loop
dbms_output.put_line(i);
i := i-1;
–循环结束的条件
exit when(i<1);
–结束循环
end loop;
end;

–循环结构:while
declare
i number(4) default 5;
begin
–开始循环
while (i < 10) loop
dbms_output.put_line(i);
i := i + 1;
–结束循环
end loop;
end;

–循环结构:for
declare
begin
–正序开始循环
for a in 1…10 loop
dbms_output.put_line(a);
–结束循环
end loop;

–倒序开始循环
for a in reverse 1…10 loop
dbms_output.put_line(a);
–结束循环
end loop;
end;

declare
–定义表名
tablename_ varchar2(20) := ‘dept’;
–定义字段结果
deptresult_ dept%rowtype;
empresult_ emp%rowtype;
–定义sql语句
sql_ varchar2(200);
begin
tablename_:=‘emp’;
–动态sql语句赋值
sql_ := 'select * from ‘||tablename_||’ where ';
–选择判断对应的表名
if(tablename_ = ‘dept’) then
sql_:= sql_||‘deptno = 10’;
–执行动态sql并将结果赋给deptresult_
execute immediate sql_ into deptresult_;
dbms_output.put_line('deptno = '||deptresult_.deptno);
dbms_output.put_line('deptname = '||deptresult_.dname);
dbms_output.put_line('loc = '||deptresult_.loc);
else
sql_ := sql_||‘empno = 7369’;
–执行动态sql并将结果赋给empresult_
execute immediate sql_ into empresult_;
dbms_output.put_line(empresult_.ename);
dbms_output.put_line(empresult_.mgr);
dbms_output.put_line(empresult_.job);
end if;
end;

–异常:预定义异常
declare
in_ number(5);
begin
in_ := 10;
in_ := in_ / 0;
–开始处理异常
exception
–匹配异常类型
when ZERO_DIVIDE then
dbms_output.put_line(‘不能除零’);
–类型不匹配时的其他异常
when others then
dbms_output.put_line(‘其他异常’);
end;

–异常:非预定义异常
declare
–定义异常
eeee exception;
–联系错误
pragma exception_init(eeee,-1476);

in_ number(5) :=5;
begin
in_ := in_ / 0;

–开始处理异常
exception
–匹配异常类型
when eeee then
dbms_output.put_line(‘不能除零’);
end;

2.自增id造数

declare
i integer;
dbid integer;
begin
i:=1;
loop
insert into t_wb_task
  (fid, fcode, fname, fclass, fproperty, fpage_url 
  --变量直接传值                                 ---字符串拼接数字用||
  (dbid, null, null, null, null, null, null, 'exceptionHandle.'||dbid );
  i:=i+1;
  ---小批量提交一次 提高响应速度
  if mod(i,1000)=0 then
  commit;
  exit when i>100000  --停止条件
  end loop;
  end
发布了88 篇原创文章 · 获赞 5 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/weixin_42410730/article/details/92002215