列new_value并显示变量的类型和值

时间:2018-11-26 23:43:11

标签: sql oracle debugging

column dcol new_value mydate noprint
select to_char(sysdate - case
                    when to_char(sysdate, 
'hh24:mi:ss') between '17:00:00' and '23:59:59' then 0
                    when to_char(sysdate, 
'hh24:mi:ss') between '00:00:00' and '17:00:00' then 1
                end,'YYYYMMDD') dcol
from dual;

set feedback off

spool "C:\test\test_&mydate..csv";

select /*csv*/ * from REPORTS.TEST;

spool off;

嗨,

我有上面由其他人编写的SQL查询。我正在尝试理解和遵循它。 我有以下问题-想知道是否有人可以帮助我?

1)查询中有'dcol'的2个实例: a)列dcol,然后b)从对偶中选择dcol。 'dcol'是双表中的列名吗?看来,如果我将'dcol'替换为'random_col'- 该查询仍然可以正常工作

2)“ C:\ test \ test_&mydate..csv”;为什么会有双“。”而不是单'。就在“ csv”之前?

3)如何在Oracle SQL Developer中调试SQL查询?例如,在下面:

select to_char(sysdate - case
                    when to_char(sysdate, 
'hh24:mi:ss') between '17:00:00' and '23:59:59' then 0
                    when to_char(sysdate, 
'hh24:mi:ss') between '00:00:00' and '17:00:00' then 1
                end,'YYYYMMDD') dcol
from dual;

我想找出:a)sysdate的值是什么?,b)select属于哪种情况?

4)如果在SQL查询末尾,则添加:Define mydate;我将得到以下输出:

DEFINE MYDATE =“ 20181126”(VARCHAR2)

还有其他方法可以显示变量mydate及其类型吗?

1 个答案:

答案 0 :(得分:0)

1)dcol是双重查询输出的column_name

select to_char(sysdate - case
                    when to_char(sysdate, 
'hh24:mi:ss') between '17:00:00' and '23:59:59' then 0
                    when to_char(sysdate, 
'hh24:mi:ss') between '00:00:00' and '17:00:00' then 1
                end,'YYYYMMDD') dcol
from dual;


output.....
+----------+
|   dcol   |
+----------+
| 20181126 |
+----------+

代码的第一行说 列dcol new_value mydate noprint。

这意味着存储dcol的值,并将其放入“ sql plus / sqldeveloper”变量mydate中。

NB这是sqlplus程序/ sqldeveloper可以理解的sqlplus命令(它不是标准的PL / SQL)命令。

set feedback off 
means suppress the query status such as
42 rows returned..

2)“ C:\ test \ test_&mydate..csv”;为什么会有双“。”而不是单'。就在“ csv”之前?

您需要一个..来使“。”转义。在sqlplus / sqldeveloper程序中。

假脱机命令是sqlplus。在这里,您会注意到您正在创建一个“ csv”文件,其文件名与变量&mydate

中的1)输出返回的文件名相同
select /*csv*/ * from REPORTS.TEST;

这是sqldeveloper中的语法,它将生成csv文件作为输出。 检查此链接以查看生成csv的难易程度

https://www.thatjeffsmith.com/archive/2012/05/formatting-query-results-to-csv-in-oracle-sql-developer/

假脱机意味着在C:\ test \ test_20181126.csv中创建文件

3)只需按原样运行查询。

4)请尝试从double;中选择&mydate;