暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 动态创建变量并在PL/SQL代码中分配变量

askTom 2015-09-02
136

问题描述

你好,

我会尽量使问题尽量简单和简短。

是否可以创建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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论