首页 > 解决方案 > 在 PL/SQL Developer 中终止替换变量名

问题描述

我正在尝试编写一个查询,其文本紧跟在替换变量之后。我知道它可以在 SQL Plus 中完成,但我不确定在不使用动态 SQL 的情况下是否可以在 PL/SQL Developer 中完成。作为一个简单的例子,我用测试数据创建了这个表:

CREATE TABLE TEST_TABLE AS
SELECT 1 AS COL_1 FROM DUAL
UNION
SELECT 1.1 AS COL_1 FROM DUAL
UNION
SELECT 11 AS COL_1 FROM DUAL

根据我的阅读,替换变量的结尾由句点 (.) 表示。但是,这似乎只能在 SQL Plus 中正常工作。

SQL> SELECT * FROM TEST_TABLE
  2  WHERE COL_1 = &SUB_VAR.1;
     COL_1
----------
        11

当我运行上述查询并1在提示输入值时输入时SUB_VAR,我会11根据需要返回。

但是,当我在 PL/SQL Developer 的 SQL 窗口中运行相同的查询时,我得到1.1了返回,这表明它将句点视为小数点。

有没有办法在 PL/SQL Developer 的 SQL 窗口中复制与 SQL Plus 中相同的行为?

标签: sqloracleplsqldeveloper

解决方案


那将是连接,以及可能的数据类型转换(TO_NUMBER,TO_CHARCAST)。

这就是我的意思:

SQL> select *
  2  from test_table
  3  where col_1 = to_number(&sub_var || '1');
Enter value for sub_var: 1

     COL_1
----------
        11

SQL>

推荐阅读