我有一张表,月份如下所示:
product rev_jan unit_jan prod_jan rev_feb rev_march u...
我需要获取当月的数据。
目前我正在使用绑定变量。
select
rev_&1,
prod_&1,
unit_&1
from
table_name
有没有更好的方法解决方案,因为在这种方法中我必须提示月份 3 次。
我有一张表,月份如下所示:
product rev_jan unit_jan prod_jan rev_feb rev_march u...
我需要获取当月的数据。
目前我正在使用绑定变量。
select
rev_&1,
prod_&1,
unit_&1
from
table_name
有没有更好的方法解决方案,因为在这种方法中我必须提示月份 3 次。
OP 描述的是在 sqlplus“命令行”上为 sqlplus 脚本提供参数。如果文件包含以下内容:
select
rev_&1,
prod_&1,
unit_&1
from
table_name;
然后 sqlplus 将从提示中获取第一个“命令行参数”,例如
SQL> @script.sql arg1
并用文字值 arg1 替换 '&1' 而不提示三次(或者无论脚本中出现多少次子字符串 '&1')。
如果您没有在“命令行”上提供参数,那么 sqlplus 将在每次出现在脚本中时提示输入“&1”的值(此处为 3 次)。
为避免 sqlplus 解释 '&' 字符,您可以使用 sqlplus 的“set define off”或在字符串中连接单个 '&' 字符文字:'AT' || '&' || 'T'
。
或者,您可以在脚本中设置提示以提高可读性:
accept a_month prompt 'Please enter the desired month: '
select
rev_&a_month,
prod_&a_month,
unit_&a_month
from
table_name;
然后,从 sqlplus 提示符调用脚本,如下所示:
SQL> @script.sql
Please enter the desired month: jan
(脚本在这里执行。)
有关 sqlplus 参考,请参阅Oracle 手册。