某一存储过程如下:
b1 number;b2 number;b3 number;b4 number;b5 number;b6 number;b7 number;b8 number;b9 number;b10 number;b11 number;b12 number;b13 number;b14 number;b15 number;b16 number;b17 number;b18 number;b19 number;b20 number;b21 number;b22 number;b23 number;b24 number;b25 number;b26 number;b27 number;b28 number;b29 number;b30 number;b31 number;b32 number;b33 number;b34 number;b35 number;b36 number;b37 number;b38 number;b39 number;b40 number;b41 number;b42 number;b43 number;b44 number;b45 number;b46 number;b47 number;b48 number;b49 number;b50 number;b51 number;b52 number;b53 number;b54 number;b55 number;b56 number;b57 number;
i number;
jieguo1
type fudu_array is table of number;
type jieguo_array is table of number;
jieguo1 fudu_array;
array1 jieguo_array;
jieguo1:= jieguo_array(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22,b23,b24,b25,b26,b27,b28,b29,b30,b31,b32,b33,b34,b35,b36,b37,b38,b39,b40,b41,b42,b43,b44,b45,b46,b47,b48,b49,b50,b51,b52,b53,b54,b55,b56,b57);
array1 := fudu_array(3, 3.5);
i :=1;
loop
select count(1),min(t.a),max(t.b)
into jieguo1(i),a,a
from table1 t
where t.c=array1(i);
i :=i+1;
exit when i>2;
end loop;
为什么 b1,b2没有值?
b1 number;b2 number;b3 number;b4 number;b5 number;b6 number;b7 number;b8 number;b9 number;b10 number;b11 number;b12 number;b13 number;b14 number;b15 number;b16 number;b17 number;b18 number;b19 number;b20 number;b21 number;b22 number;b23 number;b24 number;b25 number;b26 number;b27 number;b28 number;b29 number;b30 number;b31 number;b32 number;b33 number;b34 number;b35 number;b36 number;b37 number;b38 number;b39 number;b40 number;b41 number;b42 number;b43 number;b44 number;b45 number;b46 number;b47 number;b48 number;b49 number;b50 number;b51 number;b52 number;b53 number;b54 number;b55 number;b56 number;b57 number;
i number;
jieguo1
type fudu_array is table of number;
type jieguo_array is table of number;
jieguo1 fudu_array;
array1 jieguo_array;
jieguo1:= jieguo_array(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22,b23,b24,b25,b26,b27,b28,b29,b30,b31,b32,b33,b34,b35,b36,b37,b38,b39,b40,b41,b42,b43,b44,b45,b46,b47,b48,b49,b50,b51,b52,b53,b54,b55,b56,b57);
array1 := fudu_array(3, 3.5);
i :=1;
loop
select count(1),min(t.a),max(t.b)
into jieguo1(i),a,a
from table1 t
where t.c=array1(i);
i :=i+1;
exit when i>2;
end loop;
为什么 b1,b2没有值?
解决方案 »
- 如何查询正在运行的session运行的哪个存储过程或者JOB?
- 问一个傻一点的问题……
- 如何执行带OUT参数的ORACLE存储过程(包括游标)
- excel数据导入oracle--System.IO.IOException: 文件''正由另一进程使用,因此该进程无法访问该文件。
- 研讨dblink的速度问题
- 这样的条件应该怎么写
- 游标SQL语句,未报错,但执行后却没有效果????????
- orical 9i for win2k/2003 server有几张碟?
- 帮我一个ORACLE 问题
- sqlplus登录时的数据库名是SYSTEM,但用plsql登录时却是默认数据库名SQL
- SQL语句的优化
- ODI增量集成,没有以MySQL(数据源)为目标技术的JKM模块,怎么解决?
create or replace procedure t_p
as
i number;a number;b number;b1 number:=100;b2 number:=200;b3 number;b4 number;b5 number;b6 number;b7 number;b8 number;b9 number;b10 number;b11 number;b12 number;b13 number;b14 number;b15 number;b16 number;b17 number;b18 number;b19 number;b20 number;b21 number;b22 number;b23 number;b24 number;b25 number;b26 number;b27 number;b28 number;b29 number;b30 number;b31 number;b32 number;b33 number;b34 number;b35 number;b36 number;b37 number;b38 number;b39 number;b40 number;b41 number;b42 number;b43 number;b44 number;b45 number;b46 number;b47 number;b48 number;b49 number;b50 number;b51 number;b52 number;b53 number;b54 number;b55 number;b56 number;b57 number;
type fudu_array is table of number;
type jieguo_array is table of number;
array1 fudu_array;
jieguo1 jieguo_array;
begin
array1 := fudu_array(3,3.5);
jieguo1:= jieguo_array(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22,b23,b24,b25,b26,b27,b28,b29,b30,b31,b32,b33,b34,b35,b36,b37,b38,b39,b40,b41,b42,b43,b44,b45,b46,b47,b48,b49,b50,b51,b52,b53,b54,b55,b56,b57);
i :=1;
loop
select count(1),min(t.a),max(t.b) into jieguo1(i),a,b from table1 t where t.c=array1(i);
i :=i+1;
exit when i>2;
end loop;
dbms_output.put_line('第一列:'||jieguo1(1)||'第二列:'||jieguo1(2));--此处换成b1,b2是没值的,因为b1,b2在嵌套表中只作为形参,你更新表中的值,并不会更新形参(b1,b2)本身的值
dbms_output.put_line('b1:'||b1||' b2:'||b2);--此处b1,b2还是原来的值100,200
end;
/
/*
SQL> exec t_p;
第一列:2第二列:4
b1:100 b2:200 PL/SQL 过程已成功完成。
*/
--改为定义联合数组就可以了
create or replace procedure t_p
as
i number;a number;b number;b1 number:=100;b2 number:=200;b3 number;b4 number;b5 number;b6 number;b7 number;b8 number;b9 number;b10 number;b11 number;b12 number;b13 number;b14 number;b15 number;b16 number;b17 number;b18 number;b19 number;b20 number;b21 number;b22 number;b23 number;b24 number;b25 number;b26 number;b27 number;b28 number;b29 number;b30 number;b31 number;b32 number;b33 number;b34 number;b35 number;b36 number;b37 number;b38 number;b39 number;b40 number;b41 number;b42 number;b43 number;b44 number;b45 number;b46 number;b47 number;b48 number;b49 number;b50 number;b51 number;b52 number;b53 number;b54 number;b55 number;b56 number;b57 number;
type fudu_array is table of number;
type jieguo_array is table of number index by binary_integer;--这个就不需要先初始化长度了
array1 fudu_array;
jieguo1 jieguo_array;
begin
array1 := fudu_array(3,3.5);
jieguo1(57):='20';
i :=1;
loop
select count(1),min(t.a),max(t.b) into jieguo1(i),a,b from table1 t where t.c=array1(i);
i :=i+1;
exit when i>2;
end loop;
dbms_output.put_line('第一列:'||jieguo1(1)||'第二列:'||jieguo1(2));--此处换成b1,b2是没值的,因为b1,b2在嵌套表中只作为形参,你更新表中的值,并不会更新形参(b1,b2)本身的值
dbms_output.put_line('b1:'||b1||' b2:'||b2);--此处b1,b2还是原来的值100,200
end;
/
这个是什么意思呀?