select *
into #aaa
from ccc
where ...创建临时表的语句在ORACLE中应该如何实现?
看了一下ORACLE的临时表,好像与SQL SERVER有很大不同。
我只要能达到如上的效果就行,寻找最简洁有效的方法。
into #aaa
from ccc
where ...创建临时表的语句在ORACLE中应该如何实现?
看了一下ORACLE的临时表,好像与SQL SERVER有很大不同。
我只要能达到如上的效果就行,寻找最简洁有效的方法。
解决方案 »
- 怎么学oracle
- 大家帮我看看这个SQL语句
- Oracle 10g 乱码问题,ORA-12560: TNS
- SQL 命令未正确结束,大家帮我看看,我没有分了
- 急!100分!ORACLE错误
- 要生成和当前表中相反的记录有简单的语句吗?是不是要用游标全选出来然后一条一条写?
- Table(表)和View(视图)有何联系和区别?
- Error in Open method. 未在本地计算机上注册“OraOLEDB.Oracle”提供程序?
- 为何在pl/sql中写这段话总是出错,而用sql语句就可以?
- 有可能在一条SQL语句中解决吗!!
- 设置ODBC数据源添加Oracle驱动程序时 测试Test connection 出错
- 提取单条记录用过程?多条记录用游标?(需要返回数据集给客户端程序)
(
ABILITYID NUMBER(5),
ABILITYNAME NVARCHAR2(200) ,
ABILITYDEFINE NVARCHAR2(2000) ,
ACTIONDEFINE NVARCHAR2(2000) ,
USECHK NUMBER(1) ,
PREFESSIONALCHK NUMBER(1)
) ON COMMIT PRESERVE ROWS; INSERT INTO tmpAbilities
SELECT a.*
FROM Abilities a
WHERE a.PrefessionalChk!=1
UNION
SELECT b.*
FROM AbilityStandards a
INNER JOIN Abilities b ON b.AbilityID=a.AbilityID AND b.PrefessionalChk=1
INNER JOIN Employees c ON c.PositionCode=a.PositionCode
INNER JOIN UserInfo d ON d.EmpID=c.EmpID
WHERE d.UserID='seahi'
ORDER BY 1;
SELECT a.*
,(SELECT MAX(x1.AbilityID) FROM tmpAbilities x1 WHERE x1.AbilityID<a.Abilityid) AS PrevAbilityID
,(SELECT MIN(x1.AbilityID) FROM tmpAbilities x1 WHERE x1.AbilityID>a.Abilityid) AS NextAbilityID
FROM tmpAbilities a
ORDER BY 1;
DROP TABLE tmpAbilities;请看看我实现的方法,但感觉有点麻烦,另外不知道多用户并发的时候是否会有串数据的可能?
另外以上语句执行到DROP TABLE tmpAbilities;报错误:
ORA-14452:试图创建,更改或删除正在使用的临时表中的索引
这是怎么回事?
CREATE GLOBAL TEMPORARY TABLE table_name ON COMMIT PRESERVE ROWS.
在SESSION结束是自动删除。
CREATE GLOBAL TEMPORARY TABLE table_name ON COMMIT DELETE ROWS
在提交COMMIT命令时候自动删除。每个用户登录时会生成对应的临时表,不会有串数据的情况。
CREATE GLOBAL TEMPORARY TABLE table_name ON COMMIT PRESERVE ROWS.
在SESSION结束时(JDBC中的connention close时)自动删除,不产生redo log.
CREATE GLOBAL TEMPORARY TABLE table_name ON COMMIT DELETE ROWS
在提交COMMIT命令时候(JDBC中的connention commit时)自动删除。
每个用户登录时会生成对应的临时表,不会有串数据的情况,ORACLE的临时表是预先建好的,不推荐像SQL SERVER那样在用的时候建.