在oracle plsql中计算替换变量长度

时间:2016-03-29 17:32:49

标签: oracle plsql oracle-sqldeveloper

我有简单的plsql程序,基本上我想做的是计算名称的长度,这是plsql的动态输入,然后根据长度循环。

当我给出类似v_name ='Dex'的预定义值时,它可以正常工作,但是当我给出v_name =& name时,它会抛出一条错误消息,说明必须声明Dex。

感谢任何人能否阐明这个问题。请在下面找到错误和计划详情:

错误报告: ORA-06550:第6行,第13栏: PLS-00201:必须声明标识符'DEX' ORA-06550:第6行,第3栏: PL / SQL:语句被忽略 06550. 00000 - “行%s,列%s:\ n%s” *原因:通常是PL / SQL编译错误。 *操作:

PLsql程序:

declare
v_name varchar2(30);
v_loop_count number;
v_len number;
begin
  v_name := &name;
  v_loop_count := 0;
  v_len := length(v_name);
  for v_loop_count in 0 .. v_len-1
  loop
    dbms_output.put_line('Entered Name is :: '||v_name);
  end loop;
end;

1 个答案:

答案 0 :(得分:0)

在SQL Developer(以及sqlplus)中,您可以定义替换变量,例如您从&开始。但是这些替换变量与代码中的变量或文字不同。在解析和执行代码之前,这些替换变量只能以文本方式替换。

如果你有

v_name := &name;

然后文本替换将产生此代码:

v_name := Dex;

因为您没有名为DEX的变量,所以会出现您提到的错误。

正如评论中所提到的,在替换变量周围放置单引号就是答案。

v_name := '&name';

这将替换为

v_name := 'Dex';

这是你想要的 - 字符串值'Dex'