有几个SQL :
select F001,F002 from T_001
select F001,F002,F003 from T_001
如何根据这些SQL动态建立写到临时表里。
再说一些,以下两种方法是能建临时表,但要先指定列名。我想要的是不先指定列表如何建立临时表呢?
CREATE GLOBAL TEMPORARY TABLE TABLE_NAME (字段名列表)
AS
SELECT * FROM TABLE
ON COMMIT DELETE ROWS;CREATE GLOBAL TEMPORARY TABLE TABLE_NAME (字段名列表)
AS
SELECT * FROM TABLE
ON COMMIT PRESERVE ROWS;
select F001,F002 from T_001
select F001,F002,F003 from T_001
如何根据这些SQL动态建立写到临时表里。
再说一些,以下两种方法是能建临时表,但要先指定列名。我想要的是不先指定列表如何建立临时表呢?
CREATE GLOBAL TEMPORARY TABLE TABLE_NAME (字段名列表)
AS
SELECT * FROM TABLE
ON COMMIT DELETE ROWS;CREATE GLOBAL TEMPORARY TABLE TABLE_NAME (字段名列表)
AS
SELECT * FROM TABLE
ON COMMIT PRESERVE ROWS;
我个人的建议是只构建动态的sql语句,然后用游标返回结果集。
有一个表 有两个列:
datetime num
200801 8
200802 4
200803 3
200804 6
200805 3
200806 2
200807 7
200808 8
200809 2
200810 1
200811 0
..... 有n行,
现在要求转换为
有n列,一行,
就是
datetime1 datetime2 datetime3 datetime4 datetime5 datetime6 ....
200801 200802 200803 200803 200803 200803 ....
请求一个存储过程
-------------
drop table A
create table A
(
datetime varchar(20),
num varchar(10)
)
insert into A values('200801',8);
insert into A values('200802',4);
insert into A values('200803',3);
select substr(sum(decode(datetime,'200801',datetime)) as datetime1 ,
sum(decode(datetime,'200802',datetime)) as datetime2 ,
from Aselect * from Adeclare
v_datetime varchar(20);
v_i int:=0;
v_s varchar(1000);
v_sql varchar(2000);
cursor c
is
select datetime from A;
begin
v_s := 'select ';
open c;
loop
fetch c into v_datetime;
if c%found then
v_i :=v_i+1;
v_s := v_s||'sum(decode(datetime,'||v_datetime||',datetime)) as datetime'||v_i||',' ;
else
exit;
end if;
end loop;
v_s := SUBSTR(v_s, 0, LENGTH(v_s) - 1);--去掉最后一个逗号
v_sql := v_s||' from A';
dbms_output.put_line('v_sql='||v_sql);end;
这种功能Oracle如何做到?
CREATE OR REPLACE VIEW V_TEST AS SELECT * FROM TABLE1;
create global temporary table tp_table_01
on commit [preserve/delete] rows
as
select * from table_01;很好用啊!
SQL Server 中,#tmp这个表,对于每个连接过来的链接都是唯一可见的。也就是说,
当sa在1号客户端连接时,他建了一个#tmp,结构有两列,c1,c2
当sa同时在2号客户端连接时,他也建了一个#tmp ,结构有三列,c1,c2,c3
主要特性如下:
1、两人的表数所不一样,而且最重要的是,结构也不一样。
2、当连接断开时,#tmp消失。
3、当连接不断开时,也就是在多页面请求数据库时,同样可以查询此#号表。
Oracle中有没有办法实现此功能?