sql - 在 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 中相同的行为?
解决方案
那将是连接,以及可能的数据类型转换(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>
推荐阅读
- python - 如何在python中计算在线pdf的页数?
- android - 如何从 android / kotlin 中的 firebase 读取子数据的子数据
- vue.js - vuejs treeselect - 延迟加载不能通过 vuex 操作工作
- php - 如何格式化 JSON 对象 PHP
- amazon-web-services - 如何在 spark-submit 命令中增加 AM 容器大小?错误:容器运行超出物理内存限制
- java - Spring Boot 无法识别带有发送请求参数的控制器
- javascript - 使用选定的选项填充 html 表
- c - C - 检查字符串的最后一个字符是否等于“#”
- unix - Bourne - 预期二元运算符
- firebase-security - 如何允许 firebase 用户仅访问他们创建的文档