我有一个表(其中包括)时间戳列(名为timestamp;它是标准的Oracle DATE数据类型).记录大约相隔4-11分钟,每小时大约7或8条记录,我正在尝试确定它们是否有任何模式.
是否有一种简单的方法可以查看每条记录,以及记录在上一条记录之后发生的分钟数?
谢谢,AndyDan
我刚刚发现,如果您有一个引发 TOO_MANY_ROWS 异常的 SELECT INTO,该变量仍会从查询检索到的第一条记录中分配值。这是预期的行为吗?
这是我的例子:
for co in my_cursor loop
l_sco_db_id := null;
begin
select db_id
into l_sco_db_id
from objects_tab
where object_name = co.object_name;
exception
when no_data_found then
dbms_output.put_line('No objects_tab record found for Object ' || co.object_name);
when too_many_rows then
dbms_output.put_line('Multiple objects_tab records found for Object ' || co.object_name);
l_sco_db_id := null;
end;
end loop;
Run Code Online (Sandbox Code Playgroud)
这是在一个循环内,所以我在开始时将变量设置为 null 以确保它是空白的,但是我不得不在 WHEN TOO_MANY_ROWS 异常中再次明确地这样做,这是我没想到的。我的同事(至少,那些直接听到的)也没有期望这个变量有一个值。
我的同事是ANSI连接语法的新手,最近写了一个查询,如下所示:
SELECT count(*)
FROM table1 t1
JOIN table2 t2 ON
(t1.col_a = t2.col_a)
JOIN table3 t3 ON
(t2.col_b = t3.col_b)
JOIN table3 t3 ON
(t3.col_c = t1.col_c);
Run Code Online (Sandbox Code Playgroud)
请注意,table3在不同的列上同时连接到table1和table2,但是两个JOIN子句为table3使用相同的表别名。
查询运行,但是我不确定它的有效性。 这是编写此查询的有效方法吗?
我认为联接应该是这样的:
SELECT count(*)
FROM table1 t1
JOIN table2 t2 ON
(t1.col_a = t2.col_a)
JOIN table3 t3 ON
(t2.col_b = t3.col_b AND
t3.col_c = t1.col_c);
Run Code Online (Sandbox Code Playgroud)
两个版本在功能上是否相同? 我不确定数据库中是否真的有足够的数据。
谢谢。
我最近遇到了这样的示例代码:
select TO_CHAR(DATE '2012-3-1', 'Day Month Year') from dual;
Run Code Online (Sandbox Code Playgroud)
我理解TO_CHAR,但我以前从未见过使用DATE,也找不到与之相关的文档.有人可以解释它是如何工作的,和/或提供一些文档的链接?
谢谢,丹