Oracle 使用替换变量运行游标

Oracle 使用替换变量运行游标,oracle,plsql,oracle-sqldeveloper,Oracle,Plsql,Oracle Sqldeveloper,我正在尝试使用替换变量运行游标。我尝试输入Pa,它抛出以下错误: 必须声明标识符PA 替换变量的前缀是&,而不是$,因此您的代码应该是: v_fname employee.fname%TYPE:=&Idemp; 但是,如果需要绑定变量,则应在其前面加上: v_fname employee.fname%类型:=:Idemp; 替换变量的前缀是&,而不是$,因此您的代码应该是: v_fname employee.fname%TYPE:=&Idemp; 但是,如果需要绑定变量,则应在其前面加上:

我正在尝试使用替换变量运行游标。我尝试输入
Pa
,它抛出以下错误:

必须声明标识符PA


替换变量的前缀是
&
,而不是
$
,因此您的代码应该是:

v_fname employee.fname%TYPE:=&Idemp;
但是,如果需要绑定变量,则应在其前面加上

v_fname employee.fname%类型:=:Idemp;

替换变量的前缀是
&
,而不是
$
,因此您的代码应该是:

v_fname employee.fname%TYPE:=&Idemp;
但是,如果需要绑定变量,则应在其前面加上

v_fname employee.fname%类型:=:Idemp;

如果在提示时输入
Pa
,则需要将替换引用括在单引号中,以便在解析PL/SQL块时使其成为字符串文字:

v_fname employee.fname%TYPE:='&Idemp';
然后将解析为
…:='帕'

如您所知,如果没有引号,它将被解析为
…:=Pa
,它将尝试将
Pa
解释为一个(非引用的)标识符;因此,您将得到错误



在PL/SQL中使用替换变量有点奇怪,尽管它适用于匿名块。在将PL/SQL及其替换值传递给数据库引擎以进行解析和执行之前,由客户机(例如SQL*Plus)完成替换。但是,对于您正在做的事情,使用PL/SQL有点奇怪,因此我认为这是一个人为的练习。

如果在提示时输入
Pa
,则需要将替换引用括在单引号中,以便在解析PL/SQL块时使其成为字符串文字:

v_fname employee.fname%TYPE:='&Idemp';
然后将解析为
…:='帕'

如您所知,如果没有引号,它将被解析为
…:=Pa
,它将尝试将
Pa
解释为一个(非引用的)标识符;因此,您将得到错误



在PL/SQL中使用替换变量有点奇怪,尽管它适用于匿名块。在将PL/SQL及其替换值传递给数据库引擎以进行解析和执行之前,由客户机(例如SQL*Plus)完成替换。但是,对于您正在做的事情,使用PL/SQL有点奇怪,所以我认为这是一个人为的练习。

为什么替换变量在这种情况下不起作用?为什么替换变量在这种情况下不起作用?