【问题标题】:Oracle 11G repeats output_put.put_line twice. How to solve this?Oracle 11G 重复 output_put.put_line 两次。如何解决这个问题?
【发布时间】:2015-07-28 12:05:30
【问题描述】:

我的循环给了我两倍的结果。因为我只想要一次。我该怎么办?

 for i in 1..length(newStudentNumber) loop
    character := SUBSTR(newStudentNumber, i, 1);
    newStudentNumber := newStudentNumber || case character
     when 'A' then '16'
     when 'B' then '17'
     when 'C' then '18'
     when 'D' then '19'
     when 'E' then '20'
     when 'F' then '21'
     when 'G' then '22'
     when 'H' then '23'
     when 'I' then '24'
     when 'J' then '25'
     when 'K' then '26'
     when 'L' then '27'
     when 'M' then '28'
     when 'N' then '29'
     when 'O' then '30'
     when 'P' then '31'
     when 'Q' then '32'
     when 'R' then '33'
     when 'S' then '34'
     when 'T' then '35'
     when 'U' then '36'
     when 'V' then '37'
     when 'W' then '38'
     when 'X' then '39'
     when 'Y' then '40'
     when 'Z' then '41'
     else character
    end;
  end loop;
  dbms_output.put_line(newStudentNumber);

希望我对这个问题不要太含糊

提前致谢

【问题讨论】:

  • 函数中有 9 次调用 dbms_output,匿名块中有 1 次调用。您显示了十个值。有什么问题?
  • 我得到的结果是这样的:TUENL1234567893536202927123456789 而我只想要:3536202927123456789。因为 TUENL1234567893 是另一个部分的重复(我认为或我建议)。我只想要一次遮阳篷。还是我觉得 TUENL1234567893536202927123456789 是一个结果很有趣?我希望你知道我想说什么。欢呼
  • 我不想创建垃圾邮件。我过滤了一些输出和结果。我的问题在于循环。不知何故,当它执行时,我得到双重结果(另一个结果相同)

标签: string oracle11g output dbms-output


【解决方案1】:

在您的循环中,您将可能转换的字符附加到您正在循环的同一字符串变量newStudentNumber。如果您不想要旧值和新值,则需要在循环中填充第二个变量。

  -- new variable, which has to be declared
  convertedStudentNumber := null;
  for i in 1..length(newStudentNumber) loop
    character := SUBSTR(newStudentNumber, i, 1);
    convertedStudentNumber := convertedStudentNumber || case character
    ...
    else character
    end;
  end loop;
  dbms_output.put_line(convertedStudentNumber);

现在这两个变量有不同的值,一个以TUE... 开头,另一个以353620... 开头。

【讨论】:

  • 你是完美的伴侣。当我看到它时。这很明显。不过感谢帮助,辛苦了!我将您的遮阳篷标记为合适的人
  • 亚历克斯有一个问题。我是否可以使用此循环从数字中生成字母。所以基本上扭转了这个循环。如果我想这样做,我需要调整我的循环吗?干杯
  • @MaximedeLange - 不知道你的意思。您想将字母转换为数字,将数字转换为字母吗?在这种情况下,您可以这样做,当然,您只需要定义翻译 - 1->A 或其他任何内容。
  • 我需要创建一个带有校验和的 ISIN。所以我需要像上面的循环一样将所有数字转换为数字,经过一堆其他事情后,我需要再次将相同的数字转换为字母。我为我的问题尝试了上述循环,但它不起作用。奇怪,艰难。你会说它会完全一样(但是然后改变“当'16'然后'A'”)?对不起我的英语不好
  • 再一次。不要试图创建垃圾邮件^^。我搞定了。昨天花了太多时间。我什至无法再思考了。但现在已经修复了
猜你喜欢
  • 1970-01-01
  • 2012-02-01
  • 1970-01-01
  • 2017-05-07
  • 2019-06-12
  • 1970-01-01
  • 2020-06-12
  • 2014-10-07
  • 1970-01-01
相关资源
最近更新 更多