问题描述
你好,
我会尽量使问题尽量简单和简短。
是否可以创建10个相同类型的变量( var01、var02、...var10 ) ,然后动态地给它们赋值,而不逐个显式赋值?
基本思想类似于:
开始
var01 varchar2(2) ;
var02 varchar2(2) ;
..
var10varchar2(2) ;
mysql varchar2(400) ;
宣布
1..10弧线中的for i
--很明显,此代码不起作用:
mysql :='声明var'|| lpad ( i, 2,'0') ||'varchar2(2) ;开始var'|| lpad ( i, 2,'0') || ':= ''' || lpad ( i, 2,'0') || '''; end ;';
执行即时mysql ;
结束弧线;
--并再次在循环中的某个位置/某种方式引用这些变量:
对于1..10弧线中的i
DBMS_OUTPUT.PUT_Lpad ('var'|| lpad(i, 2,'0') ||'='|| /***VALUE of ***/ var||lpad(i, 2,'0') );
结束弧线;
结束;
谢谢,
我会尽量使问题尽量简单和简短。
是否可以创建10个相同类型的变量( var01、var02、...var10 ) ,然后动态地给它们赋值,而不逐个显式赋值?
基本思想类似于:
开始
var01 varchar2(2) ;
var02 varchar2(2) ;
..
var10varchar2(2) ;
mysql varchar2(400) ;
宣布
1..10弧线中的for i
--很明显,此代码不起作用:
mysql :='声明var'|| lpad ( i, 2,'0') ||'varchar2(2) ;开始var'|| lpad ( i, 2,'0') || ':= ''' || lpad ( i, 2,'0') || '''; end ;';
执行即时mysql ;
结束弧线;
--并再次在循环中的某个位置/某种方式引用这些变量:
对于1..10弧线中的i
DBMS_OUTPUT.PUT_Lpad ('var'|| lpad(i, 2,'0') ||'='|| /***VALUE of ***/ var||lpad(i, 2,'0') );
结束弧线;
结束;
谢谢,
专家解答
假设数据类型是常见的,我所能想到的最接近的就是一个数组,例如:
希望这个能帮上忙
SQL> set serverout on
SQL> declare
2 type list_of_vars is table of varchar2(2)
3 index by pls_integer;
4
5 vars list_of_vars;
6
7 begin
8 for i in 1 .. 100 loop
9 vars(i) := 'X';
10 end loop;
11
12 for i in 1 .. 100 loop
13 dbms_output.put_line('var '||i||' = '||vars(i));
14 end loop;
15 end;
16 /
var 1 = X
var 2 = X
var 3 = X
var 4 = X
var 5 = X
etc etc etc
希望这个能帮上忙
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




