标签: oracle10g

是否有Oracle等效于SQL Server的OUTPUT INSERTED.*?

在SQL Server中,您可以执行以下操作:

INSERT INTO some_table (...) OUTPUT INSERTED.*
VALUES (...)
Run Code Online (Sandbox Code Playgroud)

这样您就可以插入任意的列/值集并获取这些结果.有没有办法在Oracle中这样做?

我能想到的最好的是:

INSERT INTO some_table (...)
VALUES (...)
RETURNING ROWID INTO :out_rowid
Run Code Online (Sandbox Code Playgroud)

...使用:out_rowid作为绑定变量.然后使用这样的第二个查询:

SELECT *
FROM some_table
WHERE ROWID = :rowid
Run Code Online (Sandbox Code Playgroud)

...但这与它返回列中的所有内容并不完全相同,而不仅仅是我插入的列.

有没有更好的方法来做到这一点,而不使用大量的PL/SQL,最好只有一个查询?

sql sql-server oracle oracle10g

16
推荐指数
2
解决办法
1万
查看次数

如何禁用oracle cache进行性能测试

我正在尝试为我的数据测试新的汇总表的效用.

所以我创建了两个过程来获取某个间隔的数据,每个过程使用不同的表源.所以在我的C#控制台应用程序上,我只是调用一个或另一个.当我想重复几次以获得良好的响应时间模式时,问题就出现了.

我有这样的事情:1199,84,81,81,81,81,82,80,80,81,81,80,81,91,80,80,81,80

可能我的Oracle 10g正在进行不适当的缓存.

我怎么能解决这个问题?

oracle performance caching oracle10g

16
推荐指数
2
解决办法
3万
查看次数

Oracle 10G:ORA-06575:处于无效状态的函数

我创造了这样的功能

CREATE OR REPLACE FUNCTION tax 
(p_sal IN  NUMBER(4)) 
RETURN NUMBER 
AS
v_tax NUMBER(4);
BEGIN 
v_tax:= CASE        
WHEN p_sal> 4000 THEN
p_sal*0.33       
WHEN p_sal >2500 THEN 
p_sal*0.25      
WHEN p_sal >1500 THEN 
p_sal*0.20     
ELSE 0         
END; 
RETURN v_tax;
END;
/
Run Code Online (Sandbox Code Playgroud)

当我在插入stmt中使用此税功能时

INSERT INTO employees(eno, ename, job, join_date, sal, comm)
VALUES (7784,'allen','salesman',sysdate, 5000, tax(5000));
Run Code Online (Sandbox Code Playgroud)

它显示错误

ERROR: ORA-O6575: package or function tax is in invalid state.
Run Code Online (Sandbox Code Playgroud)

任何人都可以建议我如何使这个功能处于有效状态?提前致谢.

function oracle10g

16
推荐指数
3
解决办法
4万
查看次数

是否可以在oracle中杀死单个查询而不会终止会话?

我希望能够在Oracle 10.2.0.4中终止用户的查询而不会终止整个会话.这将允许查询结束,但不会将该用户记录在其会话之外,因此他们可以继续进行其他查询.这有可能吗?或者是杀死会话的直言不讳是结束查询执行的唯一方法?

oracle oracle10g

15
推荐指数
1
解决办法
2万
查看次数

Oracle数据库是否应该有多个表空间用于数据存储?

我的团队维护着一个约为的Oracle数据库.200GB大小.所有数据(表,索引等)都存在于单个"USERS"表空间中.这是一个坏主意吗?拥有多个表空间有什么好处,在什么情况下我想为我的数据库添加更多?

谢谢!

oracle oracle10g tablespace

15
推荐指数
4
解决办法
1万
查看次数

oracle中触发器之前和之后的差异

有人可以通过一个例子解释oracle 10g中"before"和"after"触发器之间的区别吗?

sql oracle10g

15
推荐指数
2
解决办法
4万
查看次数

在Oracle 10g中使用Left Join删除

我有以下代码在MS SQL Server中正常工作:

delete grp
from grp
left join my_data
on grp.id1 = my_data.id1
and grp.id2 = my_data.id2
and grp.id3 = my_data.id3
and grp.id4 = my_data.id4
where my_data.id1 is NULL
Run Code Online (Sandbox Code Playgroud)

基本上,我想删除所有可以找到grp并且没有任何等价的事件in my_data.遗憾的是,它在Oracle 10g中不起作用.我尝试使用左连接(+)的旧语法,但它也不起作用.像这样:

delete grp
from grp,
my_data
where grp.id1 = my_data.id1 (+)
and grp.id2 = my_data.id2 (+)
and grp.id3 = my_data.id3 (+)
and grp.id4 = my_data.id4 (+)
and my_data.id1 is NULL
Run Code Online (Sandbox Code Playgroud)

IN如果我没有多个键但是我不知道如何将它用于我的数据,那么一个子句就可以工作.那么,替代方案是什么?

oracle oracle10g

15
推荐指数
3
解决办法
3万
查看次数

SQL错误:ORA-02298:无法验证(SYSTEM.AEROPUERTO_FK) - 未找到父键

我在Oracle SQL Developer上遇到以下错误:

Error starting at line 1 in command:
    ALTER TABLE AEROPUERTO ADD CONSTRAINT AEROPUERTO_FK FOREIGN KEY (CODIGO_CIUDAD) REFERENCES CIUDAD(CODIGO)

Error report:
    SQL Error: ORA-02298: cannot validate (SYSTEM.AEROPUERTO_FK) - parent keys not found
    02298. 00000 - "cannot validate (%s.%s) - parent keys not found"
    *Cause:    an alter table validating constraint failed because the table has
               child records.
    *Action:   Obvious
Run Code Online (Sandbox Code Playgroud)

为什么?

database oracle oracle10g

15
推荐指数
1
解决办法
3万
查看次数

如何删除Oracle 10中的用户,包括其所有表空间和数据文件

当我给命令删除用户即DROP USER'用户名'级联时,

  1. 它是否删除该特定用户使用的所有表空间和数据文件.

  2. 如果没有,删除该特定用户使用的所有表空间/数据文件/磁盘空间的命令是什么.

oracle10g

14
推荐指数
3
解决办法
9万
查看次数

14
推荐指数
2
解决办法
6万
查看次数