【问题标题】:Bind variables in SQL Developer - data type在 SQL Developer 中绑定变量 - 数据类型
【发布时间】:2019-01-28 17:11:51
【问题描述】:

我正在尝试在 SQL Developer 中使用绑定变量。问题是我无法将变量设置为NUMBER - 它的类型始终设置为VARCHAR2(32)

create view test1v as select 1 as abc from dual;
VARIABLE X NUMBER;
EXEC :X := 1;
explain plan for SELECT /*TOTO7*/ * FROM test1v where rownum = :X;

我正在使用 SQL Developer 17.4.0.355

【问题讨论】:

    标签: oracle-sqldeveloper bind-variables


    【解决方案1】:

    它是类型号——至少如果你运行一个真实的语句,而不是仅仅解释一个。作为快速检查,如果您这样做:

    EXEC :X := 'X';
    

    然后您将按预期得到“ORA-06502: PL/SQL: numeric or value error: character to number conversion error”。

    我认为,令人困惑的是,您假设解释查询中的 :X 正在使用您声明的本地绑定变量。但是您可以将:1:Z 用于explain plan,它仍然可以工作并显示相同的信息。

    你先解释的时候,没有捕获到绑定值,也不知道绑定类型,所以默认为varchar2

    explain plan for SELECT /*ABC1*/ * FROM test1v where rownum = :X;
    
    Explained.
    
    select sbc.datatype_string, sbc.was_captured, sbc.value_string
    from gv$sql s
    join gv$sql_bind_capture sbc on sbc.sql_id = s.sql_id
    where s.sql_text like '%ABC1%';
    
    DATATYPE_STRING WAS_CAPTURED VALUE_STRING
    --------------- ------------ ------------
    VARCHAR2(32)    NO                       
    

    如果您实际运行查询,而不是仅仅解释它,现在会捕获绑定值 - 两个版本都会出现:

    SELECT /*ABC1*/ * FROM test1v where rownum = :X;
    
           ABC
    ----------
             1
    
    select sbc.datatype_string, sbc.was_captured, sbc.value_string
    from gv$sql s
    join gv$sql_bind_capture sbc on sbc.sql_id = s.sql_id
    where s.sql_text like '%ABC1%';
    
    DATATYPE_STRING WAS_CAPTURED VALUE_STRING
    --------------- ------------ ------------
    VARCHAR2(32)    NO                       
    NUMBER          YES          1           
    

    我怀疑你正常运行了一个查询,然后添加了一个注释以便能够找到它的 SQL ID 和绑定信息;但是在这样做时,您将其设置为 different 查询,该查询被单独解析,并且此时未捕获绑定。但是,如果您先运行查询,您会看到同样的情况 - 首先捕获了 number 版本,但解释计划版本仍然获得了 varchar2 条目。

    【讨论】:

      猜你喜欢
      • 2017-06-30
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 2017-06-06
      • 2017-07-09
      • 2023-03-07
      • 1970-01-01
      相关资源
      最近更新 更多