在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,最好只有一个查询?
我正在尝试为我的数据测试新的汇总表的效用.
所以我创建了两个过程来获取某个间隔的数据,每个过程使用不同的表源.所以在我的C#控制台应用程序上,我只是调用一个或另一个.当我想重复几次以获得良好的响应时间模式时,问题就出现了.
我有这样的事情:1199,84,81,81,81,81,82,80,80,81,81,80,81,91,80,80,81,80
可能我的Oracle 10g正在进行不适当的缓存.
我怎么能解决这个问题?
我创造了这样的功能
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)
任何人都可以建议我如何使这个功能处于有效状态?提前致谢.
我希望能够在Oracle 10.2.0.4中终止用户的查询而不会终止整个会话.这将允许查询结束,但不会将该用户记录在其会话之外,因此他们可以继续进行其他查询.这有可能吗?或者是杀死会话的直言不讳是结束查询执行的唯一方法?
我的团队维护着一个约为的Oracle数据库.200GB大小.所有数据(表,索引等)都存在于单个"USERS"表空间中.这是一个坏主意吗?拥有多个表空间有什么好处,在什么情况下我想为我的数据库添加更多?
谢谢!
有人可以通过一个例子解释oracle 10g中"before"和"after"触发器之间的区别吗?
我有以下代码在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 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)
为什么?
当我给命令删除用户即DROP USER'用户名'级联时,
它是否删除该特定用户使用的所有表空间和数据文件.
如果没有,删除该特定用户使用的所有表空间/数据文件/磁盘空间的命令是什么.
在这种情况下,我们需要for update nowait在游标中使用.
oracle10g ×10
oracle ×7
sql ×2
caching ×1
cursor ×1
database ×1
function ×1
oracle11g ×1
performance ×1
sql-server ×1
tablespace ×1