oracle存储过程2
随机拿几个食品,食品的总和等于某个价格
create table test1234 ( id number);
insert into test1234 values(10);
insert into test1234 values(20);
insert into test1234 values(30);
insert into test1234 values(40);
insert into test1234 values(50);
create or replace procedure fun_id(v in number, v_ex_id in number)
is
v_flag number := 0;
v_id number := 0;
v_rest number := 0;
begin
select count(1) into v_flag from test1234 where id = v;
if v_flag > 0 then
select id into v_id from test1234 where id = v;
dbms_output.put_line(v_id);
else
select count(1) into v_flag from test1234 where id < v and id not in (v_ex_id);
if v_flag > 0 then
select id into v_id from
(select * from test1234 where id < v and id not in (v_ex_id) order by dbms_random.value)
where rownum <= 1;
dbms_output.put_line(v_id);
v_rest := v - v_id;
fun_id(v_rest,v_id);
else
dbms_output.put_line('No record found');
end if;
end if;
end fun_id;
/
execute fun_id(70, 0);
相关文档:
Oracle系列:记录(Record)
一,什么是记录(Record)?
由单行多列的标量构成的复合结构。可以看做是一种用户自定义数据类型。组成类似于多维数组。
将一个或多个标量封装成一个对象进行操作。是一种临时复合对象类型。
记录可以直接赋值。RECORD1 :=RECORD2;
记录不可以整体比较. ......
1. 查询数据库现在的表空间
select tablespace_name, file_name, sum(bytes)/1024/1024 table_size from dba_data_files group by tablespace_name,file_name;
2. 建立表空间
CREATE TABLESPACE data01 DATAFILE '/oracle/ ......
FORALL语句的一个关键性改进,它可大大简化代码,并且对于那些要在PL/SQL程序中更新很多行数据的程序来说,它可显著提高其性能。
1:
用FORALL来增强DML的处理能力
Oracle为Oracle8i中的PL/SQL引入了两个新的数据操纵语言(DML)语句:BULK COLLECT和FORALL。这两个语句在PL/SQL内部进行一种数组处理
;BULK COLLE ......
最近一段时间一直没写博客,不是懒,是学了太多东西。以后慢慢补上。 1. odbc中添加oracle数据源 odbc中添加oracle数据源首要条件:安装oracle client。安装完之后添加,但是还必须在安装目录下通常是C:\oracle\ora90\network\ADMIN\tnsnames.ora中添加一个连接,如下格式: DXS =
(DESCRIPTION =
......
原创于2007年04月12日,2009年10月15日迁移至此。
windows xp,数据库oracle 10.2.0。1
没有备份,基本上是默认安装,好像还不是归档模式
症状:sqlplus只有sysdba用户能进去,其他用户进去一概报:ora-01033:oracle正在初始化或关闭
而且sysdba用户进去之后能执行select sysdate from dual,但是执行select use ......