在 PL/SQL 开发人员中终止替换变量名称
Terminating a Substitution Variable Name in PL/SQL Developer
我正在尝试编写一个查询,其中的文本紧跟在替换变量之后。我知道它可以在 SQL Plus 中完成,但我不确定在 PL/SQL 开发人员中是否可以不使用动态 SQL。作为一个简单的例子,我用测试数据创建了这个 table:
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
当我 运行 上面的查询并在提示输入 SUB_VAR
的值时输入 1
时,我得到 11
按需返回。
但是,当我 运行 在 PL/SQL Developer 中的 SQL window 中执行相同的查询时,我得到的是 1.1
返回,这表明而是将句点视为小数点。
有没有办法在 PL/SQL Developer SQL window 中复制与 SQL Plus 中相同的行为?
这将是连接,以及可能的数据类型转换(TO_NUMBER
、TO_CHAR
、CAST
等)。
这就是我的意思:
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>
我明白了。我需要做的就是将替换变量名称用双引号引起来。
SELECT * FROM TEST_TABLE
WHERE COL_1 = &"SUB_VAR"1
我正在尝试编写一个查询,其中的文本紧跟在替换变量之后。我知道它可以在 SQL Plus 中完成,但我不确定在 PL/SQL 开发人员中是否可以不使用动态 SQL。作为一个简单的例子,我用测试数据创建了这个 table:
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
当我 运行 上面的查询并在提示输入 SUB_VAR
的值时输入 1
时,我得到 11
按需返回。
但是,当我 运行 在 PL/SQL Developer 中的 SQL window 中执行相同的查询时,我得到的是 1.1
返回,这表明而是将句点视为小数点。
有没有办法在 PL/SQL Developer SQL window 中复制与 SQL Plus 中相同的行为?
这将是连接,以及可能的数据类型转换(TO_NUMBER
、TO_CHAR
、CAST
等)。
这就是我的意思:
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>
我明白了。我需要做的就是将替换变量名称用双引号引起来。
SELECT * FROM TEST_TABLE
WHERE COL_1 = &"SUB_VAR"1