pl/sql:定义一个table类型的变量,那么变量本身代表什么?

java_benben 2008-03-11 05:11:05
如图,举个例子说明:
type test_table is table of varchar2(10) index by binary_integer;
instance_table test_table;
v_test1 varchar2(20);
v_test2 varchar2(20);
begin
instance_table(1) := 'first';
instance_table(2) := 'first';
v_test1 := instance_table(1);
v_test2 := instance_table; ?? --这里instance_table要怎么用?
......
请问,变量instance_table除了可以这样来引用instance_table(1) := '***';
其本身代表什么,instance_table ??
...全文
434 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sxx_tt 2008-03-21
  • 打赏
  • 举报
回复
oracle中数组下标是从1开始的
java_benben 2008-03-19
  • 打赏
  • 举报
回复
谢谢 xuehu007 的关注
说道类似c语言中的数组类型,那么在c中,定义好的一个数组,比如int int_array = {1,1,1,1,1}
是不是 int_array = int_array[0] = 1 呢,如果是这样
那么,我想知道oracle中的test_table = test_table[0] 吗?或者其他什么意思?
山河会 2008-03-11
  • 打赏
  • 举报
回复
type test_table is table of varchar2(10) index by binary_integer;

这一句定义相当于定义一个数组类型,类型C语言中的typedef的作用
test_table就相当于varchar2(10)[]

instance_table test_table;
定义test_table类型的变量

这样定义后,instance_table就是一个可变长的一维数组了
刚开始instance_table.count=0
当你
instance_table(1) := 'first';
instance_table(2) := 'first'; 这样一个个赋值后

instance_table.count会动态增加,从而标志数组长度

大致就这样了,至于你程序中提到的那句,按逻辑应该是这样的:
v_test2 := instance_table(2);

17,089

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧