select *
into #aaa
from ccc
where ...创建临时表的语句在ORACLE中应该如何实现?
看了一下ORACLE的临时表,好像与SQL SERVER有很大不同。
我只要能达到如上的效果就行,寻找最简洁有效的方法。
into #aaa
from ccc
where ...创建临时表的语句在ORACLE中应该如何实现?
看了一下ORACLE的临时表,好像与SQL SERVER有很大不同。
我只要能达到如上的效果就行,寻找最简洁有效的方法。
解决方案 »
- SQL查询语句的优化
- ORA-03135: connection lost contact
- 怎么将xls文件转换成数据库格式文件?
- ORACLE 存储过程如何使用不定长数组参数????
- 跪问:如何安装oracle9i客户端?????????
- 最后一点啦,求一触发器
- 这个思路用存储过程该怎么写?
- 如何将多行记录的某String形字段的内容拼接起来?
- 关于数据类型缩写
- (抢分啦)怎样启动Oracle Database Configuation Asssistant?
- 设置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那样在用的时候建.