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及其类型吗?
答案 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的难易程度
假脱机意味着在C:\ test \ test_20181126.csv中创建文件
3)只需按原样运行查询。
4)请尝试从double;中选择&mydate;