我有简单的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;
答案 0 :(得分:0)
在SQL Developer(以及sqlplus)中,您可以定义替换变量,例如您从&
开始。但是这些替换变量与代码中的变量或文字不同。在解析和执行代码之前,这些替换变量只能以文本方式替换。
如果你有
v_name := &name;
然后文本替换将产生此代码:
v_name := Dex;
因为您没有名为DEX的变量,所以会出现您提到的错误。
正如评论中所提到的,在替换变量周围放置单引号就是答案。
v_name := '&name';
这将替换为
v_name := 'Dex';
这是你想要的 - 字符串值'Dex'
。