要使用pl/sql块
创新互联建站-成都网站建设公司,专注成都网站建设、做网站、网站营销推广,域名注册,网页空间,网站托管、服务器托管有关企业网站制作方案、改版、费用等问题,请联系创新互联建站。
采用
loop
语句
exit when 退出循环的条件
end loop
--1.For FOR 循环变量 IN [REVERSE] 下界..上界 LOOP 语句组 END LOOP; --计算5的阶乘,并在屏幕上打印出来。 DECLARE num NUMBER(3):=5; resu NUMBER(3):=1; BEGIN for i in 1..num loop resu:= resu * i; end loop; dbms_output.put_line(TO_CHAR(resu)); END;
--2.WHILE循环语法格式: WHILE 条件 LOOP 语句组 END LOOP; --用WHILE循环求1~100所有整数的和 DECLARE summ number :=0; i number(3):=100;BEGIN WHILE i0 LOOP summ:=summ+i; i:=i - 1; END LOOP; dbms_output.put_line(summ);END;
--1.For
FOR 循环变量 IN [REVERSE] 下界..上界
LOOP
语句组
END LOOP;
--计算5的阶乘,并在屏幕上打印出来。
DECLARE
num NUMBER(3):=5;
resu NUMBER(3):=1;
BEGIN
for i in 1..num loop
resu:= resu * i;
end loop;
dbms_output.put_line(TO_CHAR(resu));
END;
--2.WHILE循环
语法格式:
WHILE 条件 LOOP
语句组
END LOOP;
--用WHILE循环求1~100所有整数的和
DECLARE
summ number :=0;
i number(3):=100;
BEGIN
WHILE i0 LOOP
summ:=summ+i;
i:=i - 1;
END LOOP;
dbms_output.put_line(summ);
END;
你这个其实挺复杂的,要建立一系列的东西来满足你这个需求
给你做个实验吧
先建立一个表
create table test
(id varchar2(20) not null primary key ,
name varchar2(100));
创建一个序列
create sequence seqTest
increment by 1
start with 1
maxvalue 999
nocycle
cache 10;
创建一个存储过程,这个很重要,每天半夜12点执行一次,这个主要是把序列重新置0用的,然后还需要定义一个job来调用这个存储过程
create or replace procedure p_seq
as
n number(10);
v_sql varchar2(100);
begin
select seqTest.nextval into n from dual;
n:=-(n-1);
v_sql:='alter sequence seqTest increment by'|| n;
execute immediate v_sql;
select seqTest.nextval into n from dual;
v_sql:='alter sequence seqTest increment by 1';
execute immediate v_sql;
end;
然后创建一个触发器
create or replace trigger t_test
before insert on test
for each row
begin
select to_char(sysdate,'yyyymmdd')||'_'||lpad(seqTest.nextval,3,0) into :new.id from dual;
end ;
存储过程我没测试,但是编译能过去
现在做个试验
执行这样一个语句
insert into test(name) values ('aa');
然后你检查下数据,然后继续插入再看看
select * from test;
1、首先去下载oracleclient客户端工具。
2、打开PLSQL,点取消进去,然后弹出PLSQL主界面,找到菜单栏的tools选择属性preferences进去。
3、弹出如下界面,配置oracleclient,配置好两个设置项,点apply,然后点ok,关闭PLSQL,重启PLSQL。
4、如下图所示,在哪个目录就对应的去找就可以了。
5、重启PLSQL进入到登录界面,输入相关信息,用户名密码,以及连接信息,连接信息:可以是ip:1521/实例名,也可以是network/admin目录下的tnsname.ora中配置的TNS别名。
6、连接进去成功之后,可以随便写一个语句查查,是否正常,select * from dual;。
Oracle中有三种循环(For、While、Loop):
1、loop循环:
create or replace procedure pro_test_loop is
i number;
begin
i:=0;
loop
i:=i+1;
dbms_output.put_line(i);
if i5 then
exit;
end if;
end loop;
end pro_test_loop;
2、while循环:
create or replace procedure pro_test_loop is
i number;
begin
i:=0;
while i5 loop
i:=i+1;
dbms_output.put_line(i);
end loop;
end pro_test_loop;
3、for循环1:
create or replace procedure pro_test_for is
i number;
begin
i:=0;
for i in 1..5 loop
dbms_output.put_line(i);
end loop;
end pro_test_for;
4、for循环2:
create or replace procedure pro_test_cursor is
userRow t_user%rowtype;
cursor userRows is
select * from t_user;
begin
for userRow in userRows loop
dbms_output.put_line(userRow.Id||','||userRow.Name||','||userRows%rowcount);
end loop;
end pro_test_cursor;