首页 > 解决方案 > 动态替代变量

问题描述

我正在寻找替代变量是否可能是“动态的”。

例如,我想为可重复脚本使用弹出窗口,提示用户输入两个变量:颜色和数字。但是,即使用户没有输入一个变量,我也需要脚本仍然运行。换句话说,如果留空,它将变量设置为 IS NOT NULL。

这甚至可能吗?

select user
from table
where colour = '&colour'
and number = &number

标签: sqloraclesqlplus

解决方案


这并不是 Oracle 真正要做的事情(替换变量通常只是为了快速的临时事情,应该在前端处理严肃的报告)。

作为一个黑客,你可以做这样的事情:

select user
from table
where (colour = '&&colour' OR '&&colour' IS NULL)
  and (number = to_number('&&number') OR to_number('&&number') IS NULL);

作为旁注,我有点惊讶地发现空字符串被视为NULL在 Oracle 中。

显然,'' IS NULL评估为真,'' = ''评估为假(这是有道理的,因为任何相等性检查NULL都是假的)


推荐阅读