我在我的一个Oracle数据库中有一个视图,执行时间太长.当语句运行时,它似乎没有停止.
无论如何,我们可以验证此视图的性能或我们如何检查语句会话是否"挂起"?
谢谢,N2EE
我意识到问题在于视图中的底层查询.感谢Edwin的autotrace修复程序.
我正在编写一个过程来创建一个包含Oracle表中数据的CSV文件.我用过,"spool filename;"但错误即将来临.我可以spool在PL/SQL中使用吗?
我在Oracle数据库中有一个包含日期字段EXPIRYDATE的表.我需要从表格中选择所有记录,其中日期字段的小时和分钟部分设置为0(即午夜).我怎样才能做到这一点?
我尝试使用提取功能(http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/functions050.htm),但显然它只接受YEAR,MONTH或DAY作为日期字段的参数.
触发器需要在输入生日之前停止死亡日期.
CREATE TRIGGER Check_deathDate
BEFORE INSERT Or UPDATE of deathDate on Actor
FOR EACH ROW
DECLARE
deathDate DATE;
birthDate DATE;
deathDate_Error EXCEPTION;
IF (deathDate < birthDate) THEN
RAISE deathDate_Error;
END IF;
EXCEPTION
WHEN deathDate_Error THEN
Raise_application_error( 'deathDate' || 'should be before' || 'birthDate');
END;);
Run Code Online (Sandbox Code Playgroud)
给出错误......
*第3行的错误:ORA-04079:触发器规范无效
...我怎么能指定IF?
以下SQL生成具有相同模式的两个表之间的所有匹配记录,然后继续迭代存储此结果集的游标.我在这个函数的末尾用行提交逐行插入.我的问题是如何从这种类型的查询中获得最大的性能?代码如下:
BEGIN
DECLARE
CURSOR foo IS
SELECT * FROM tableOne to
WHERE EXISTS (SELECT * FROM tableTwo tt
WHERE TO.FOO = TT.FOO
AND TO.BAR = TT.BAR); --THIS TAKES 5 MINUTES (66 MILLION ROWS)
BEGIN
FOR nextFoo IN foo
LOOP
INSERT INTO tracker t
(id,foo,bar,baz)
VALUES(trackerSequence.nextval, nextFoo.foo,nextFoo.bar,nextFoo.baz);
END LOOP;
COMMIT;
END;
END;
Run Code Online (Sandbox Code Playgroud)
此查询可能需要一个多小时,我正在尝试减少与之相关的时间成本.我将处理一般的1.4亿条记录,所以我希望这个过程花费的时间加倍.所有列都已编制索引.
版本信息:
10克10.2
为什么我必须单击formservlet上左上角的保存按钮,以便我的插入查询将保存到数据库?对不起伙计们,非常新手在这里谢谢
这是我的pl sql代码添加按钮触发器:
begin
insert into tb_distributor
(distributor_id, distributor_name, distributor_type, distributor_desc)
values
(distributor_id.nextval,:DISTRIBUTOR_NAME, :DISTRIBUTOR_TYPE, :DISTRIBUTOR_DESC);
commit;
end;
Run Code Online (Sandbox Code Playgroud) 我开始在oracle创建临时表.但无法理解这一点的最佳用途.有人可以帮助我了解什么是功能和在Oracle中使用临时表的好处(create temporary table temp_table)超过普通表(create table temp_table)
)
I have made a new column in my database table:
alter table TABLE add (COLUMN NUMBER(1));
Run Code Online (Sandbox Code Playgroud)
Now I want to select all records where the value of column is not zero, either it’s some other number of empty (null)
SELECT * FROM TABLE WHERE COLUMN != 0;
Run Code Online (Sandbox Code Playgroud)
And by default all columns have empty/null value as this column is recently added so it should return all records but doesn’t return any.
But if a change the value for this column …
我有下面的代码
declare
v_rst varchar2(200);
cursor c_cur is
select sysdate from dual;
begin
open c_cur;
fetch c_cur
into v_rst;
close c_cur;
dbms_output.put_line(v_rst);
end;
Run Code Online (Sandbox Code Playgroud)
它的输出结果是"23-DEC-14"
当我在查询下面运行时,结果是"12/23/2014 11:21:06 AM"
select sysdate from dual;
Run Code Online (Sandbox Code Playgroud)
当我运行第一个代码时,我不知道为什么TIME部分消失了.
任何人都可以解释会非常感激.
我在记录栏中有一个天数列表.我想查询该列以查看它是否包含使用LIKE关键字的当前星期几.该记录包含例如:
INTV
-----------------------
monday,tuesday,wednesday
Run Code Online (Sandbox Code Playgroud)
我想看看当天是否在INTV.因此,如果今天是星期一,我希望上面的行返回.
如果我硬编码一周中的某一天,它就可以了.例如,... WHERE intv LIKE '%monday%'.但是,当我尝试通过使用SYSDATE和使用to_char(sysdate, 'day') 它来抓住当天添加当天不起作用.
这是我到目前为止没有运气的尝试:
SELECT * FROM mytable where intv like '%' || to_char(sysdate, 'day') || '%';
SELECT * FROM mytable where intv like to_char(sysdate, 'day');
SELECT * FROM mytable where intv like to_char(sysdate, '%day%');
Run Code Online (Sandbox Code Playgroud)