Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle BEGIN/END中使用的Bind变量被清除_Oracle_Oracle Sqldeveloper_Oracle12c - Fatal编程技术网

Oracle BEGIN/END中使用的Bind变量被清除

Oracle BEGIN/END中使用的Bind变量被清除,oracle,oracle-sqldeveloper,oracle12c,Oracle,Oracle Sqldeveloper,Oracle12c,这是一个简单的示例,因此很容易重现,但重要的是我需要使用将基于查询的变量设置为:someVariable from sometable,其中sometable.somecolumn=:y,然后在开始/结束块后利用这两个变量在中引用:y,其中导致其被清除。为什么会发生这种情况? 我更关心的是为什么会发生这种情况,而不是如何修复它。我有办法自行设置,但这似乎是一个奇怪的副作用。在第一个示例中,我没有声明一个名为:y的新变量,因此我认为这不是变量隐藏的问题。显然,第二个示例显示,我可以设置变量的值,并

这是一个简单的示例,因此很容易重现,但重要的是我需要使用
将基于查询的变量设置为:someVariable from sometable,其中sometable.somecolumn=:y
,然后在开始/结束块后利用这两个变量
中引用
:y
,其中
导致其被清除。为什么会发生这种情况?

我更关心的是为什么会发生这种情况,而不是如何修复它。我有办法自行设置,但这似乎是一个奇怪的副作用。在第一个示例中,我没有声明一个名为:y的新变量,因此我认为这不是变量隐藏的问题。显然,第二个示例显示,我可以设置变量的值,并且设置它在块的范围之外是可见的,这是我所期望的,因为变量是在块的范围之外声明的

clear screen;
variable x varchar2(10);
variable y varchar2(10); 

exec :y := 'YYY';

BEGIN
  select '1' into :x
  from dual
  where 'YYY' = :y;
END;
/

select :y from dual;
输出显示:y已清除:

PL/SQL procedure successfully completed.


PL/SQL procedure successfully completed.


:Y                             
--------------------------------
如果将:y设置为自身,则该值将保留:

clear screen;
variable x varchar2(10);
variable y varchar2(10); 

exec :y := 'YYY';

BEGIN
  select '1' into :x
  from dual
  where 'YYY' = :y;

  :y := :y;
END;
/

select :y from dual;
输出:

PL/SQL procedure successfully completed.


PL/SQL procedure successfully completed.


:Y                             
--------------------------------
YYY  

升级到SQL Developer 17.2.0.188后,它就消失了


似乎是这个bug:

升级到SQL Developer 17.2.0.188后,它就消失了


似乎是此错误:

我无法重现您的问题。您的测试用例似乎按预期工作。@BobC您使用的是什么版本?版本:12.1.0。2@BobC什么版本的SQL Developer?我认为这与客户有关。我曾经尝试过在12g和11c上连接不同的服务器,结果都是一样的。我认为这是一个错误,我使用的是同一版本的SQL Developer:我无法重现您的问题。您的测试用例似乎按预期工作。@BobC您使用的是什么版本?版本:12.1.0。2@BobC什么版本的SQL Developer?我认为这与客户有关。我曾经尝试过在12g和11c上连接不同的服务器,结果都是一样的。我认为这是一个错误,与我使用的SQL Developer版本相同: