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

 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);

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

提前致谢

===============>>#1 票数: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...

  ask by Maxime de Lange translate from so

未解决问题?本站智能推荐:

1回复

如何从vb.net应用程序检索Oracle DBMS_Output

我正在执行vb.net应用程序,该应用程序执行Oracle存储过程。 该存储过程使用dbms_output.put_line显示一个值。 如何从oracle数据库中检索该值到我的vb.net代码中?
2回复

Oracle - ORA-06502:PL / SQL:数值或值错误(DBMS_OUTPUT)

我实现了一个返回clob数据类型的函数,我想在DBMS输出中打印结果。 不幸的是,我得到ORA-06502:PL / SQL:数字或值错误 ,我认为这是由于DBMS_OUTPUT的大小。 这是代码。 这些内容可以帮助您理解这个问题 1)添加以下内容来设置缓冲区的大小无限制 ,
1回复

在dbms_output过程之间切换?

使用dbms_output软件包时出现问题。 当我执行以下代码时,它显示整数为0 但是当我执行以下代码时,我得到的整数是3 谁能帮我解释为什么这两个过程存在差异
1回复

Oracle输出参数的默认大小

我有一个问题,我正在创建一个像这样的程序: 但是当我为MSGTEXT分配包含201个字符以上的文本并执行此过程时,它将产生以下错误: 而且我不知道如何解决它。
1回复

Hibernate Oracle存储过程缺少表达式异常

我正在使用带注释而不是xml映射的Java 1.7,Hibernate 4,Oracle 11G。 我有这个Oracle SP: 当我使用Hibernate从Java调用它时,它说:ORA-00936缺少表达式异常。 它以粗体显示在最后一行。 这里是电话: 您知道为什么会引
2回复

literal与格式字符串oracle 11g不匹配

程序: varchar2中的codseguridad,日期中的fechavenc,varchar2中的empresatarj,varchar2中的ntelefono,varchar2中的pais,varchar2中的localidad,varchar2中的calle,日期中的fecha
1回复

如何在Oracle 11G中正确使用SUBSTR,INSTR和或REPLACE

我想做的就是获取第三个字符串。 在此示例中: 在此示例中更改为数​​字: 被(重新)放在后面。 因此,在“ 2927”之后。 我想知道如何做到这一点? 我现在获取该字符串的代码是: 这是我选择第一个示例的选择语句 这是我的第二个select语句,它将字符串
2回复

在Oracle 11G中检查字符串中的数字和字符

我正在做某事。 我必须检查一个字符串以进行验证。 该字符串具有国家代码和大学代码(来自数据库中自己的表)和一堆数字。 现在,我需要验证此字符串。 我需要检查国家/地区代码和大学代码上的此字符串,以及是否包含数字yes或no。 目前,我已经尝试了很多方法。 我尝试使用很多if语句,
1回复

DBMS_OUTPUT.PUT_LINE没有打印任何[重复]

这个问题在这里已有答案: DBMS_OUTPUT.PUT_LINE不打印 6个答案 执行以下代码时,它只是说过程已完成,并且不打印信息。 当我执行上面的代码时,编译器说,PL / SQL过程已成功完成,但不会向控制台打印任何内容。 我能做什么 ?
2回复

Oracle SQL触发器-DBMS_OUTPUT.PUT_LINE

我正在数据库中创建一个触发器,遇到了两个无法修复的错误,我很确定这两个错误与我对DBMS_OUTPUT.PUT_LINE的使用有关,该语句的其余部分不会引起任何错误错误,尽管以前有过。 错误: 错误(5,3):PL / SQL:忽略了SQL语句 错误(5,15):PL /