1.declare @table1 table(id int,age int);
2.SELECT id,name INTO #Table1 FROM (select * from myTable);
在postgresql 中有没有类似的方法创建临时表?
最好有 完整代码事例(我刚接触PG 很多基本语法不清楚)
有文档质料的具体地址也好
谢谢大家!!!
7 个解决方案
#1
CREATE FUNCTION dup(int) RETURNS TABLE(f1 int, f2 text)
AS $$ SELECT $1, CAST($1 AS text) || ' is text' $$
LANGUAGE SQL;
SELECT * FROM dup(42);
AS $$ SELECT $1, CAST($1 AS text) || ' is text' $$
LANGUAGE SQL;
SELECT * FROM dup(42);
#2
select * from aa8() a(a int,b text,c text,d text)
-- Function: aa8()
-- DROP FUNCTION aa8();
CREATE OR REPLACE FUNCTION aa8()
RETURNS SETOF record AS
$BODY$
declare
sql varchar(1000);
myrec record;
ref refcursor;
rec record;
begin
sql:='select "CustomerId" ';
for myrec in select * from "Cus_Field" loop
sql := sql || ',max(case "FieldId" when ' || myrec."FieldId" ||
' then "FieldValue" end) as ' || myrec."FieldName";
end loop ;
sql := sql || ' from "Cus_CustomerField" group by "CustomerId"';
FOR rec IN execute SQL Loop
RETURN NEXT rec;
END LOOP;
end;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100
ROWS 1000;
ALTER FUNCTION aa8() OWNER TO zw;
-- Function: aa8()
-- DROP FUNCTION aa8();
CREATE OR REPLACE FUNCTION aa8()
RETURNS SETOF record AS
$BODY$
declare
sql varchar(1000);
myrec record;
ref refcursor;
rec record;
begin
sql:='select "CustomerId" ';
for myrec in select * from "Cus_Field" loop
sql := sql || ',max(case "FieldId" when ' || myrec."FieldId" ||
' then "FieldValue" end) as ' || myrec."FieldName";
end loop ;
sql := sql || ' from "Cus_CustomerField" group by "CustomerId"';
FOR rec IN execute SQL Loop
RETURN NEXT rec;
END LOOP;
end;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100
ROWS 1000;
ALTER FUNCTION aa8() OWNER TO zw;
#3
谢谢 ACMAIN_CHM 的回复 但还不是我想要的 说的再具体点
我需要一个postgresql函数 返回一个结果集合 SETOF record 类型
如有一个表中有若干字段 "MyTable" id,age,name,...... 只需要返回其中几个
我想在函数中 创建一个临时变量(临时表) 来存放结果集合 并返回这个临时表
(我的需求是固定的 不用其他方式实现!!!)
语法大意:
CREATE OR REPLACE FUNCTION getfoo()
RETURNS SETOF record AS
$BODY$
declare
declare temptable1 table(id int,age int);
begin
return query select myid,myage into temptable1 from (select * from "MyTable");
end;$BODY$
LANGUAGE 'plpgsql' VOLATILE
ALTER FUNCTION getfoo() OWNER TO postgres;
该如何实现???
我需要一个postgresql函数 返回一个结果集合 SETOF record 类型
如有一个表中有若干字段 "MyTable" id,age,name,...... 只需要返回其中几个
我想在函数中 创建一个临时变量(临时表) 来存放结果集合 并返回这个临时表
(我的需求是固定的 不用其他方式实现!!!)
语法大意:
CREATE OR REPLACE FUNCTION getfoo()
RETURNS SETOF record AS
$BODY$
declare
declare temptable1 table(id int,age int);
begin
return query select myid,myage into temptable1 from (select * from "MyTable");
end;$BODY$
LANGUAGE 'plpgsql' VOLATILE
ALTER FUNCTION getfoo() OWNER TO postgres;
该如何实现???
#4
谢谢大家的解答: 让我知道有很多新鲜的东西值得关注。。。
不给分的原因: 当我在网上找东西的时候 对得分的回复特别关注 如果得分回复与提出的问题不一致 可能会误导寻找答案的人。。。!
本题正解之一:
CREATE OR REPLACE FUNCTION temptable()
RETURNS SETOF record AS
$BODY$
begin
create temporary table "t_2" as select * from "MyTable";
return query select * from "t_2";
drop table t_2; /*这句值得关注 如果在查询工具连续执行 那么只有第一次是执行通过的 因为在同一会话中创建同名表会提示错误。*/
end;$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100
ROWS 1000;
ALTER FUNCTION temptable() OWNER TO postgres;
不给分的原因: 当我在网上找东西的时候 对得分的回复特别关注 如果得分回复与提出的问题不一致 可能会误导寻找答案的人。。。!
本题正解之一:
CREATE OR REPLACE FUNCTION temptable()
RETURNS SETOF record AS
$BODY$
begin
create temporary table "t_2" as select * from "MyTable";
return query select * from "t_2";
drop table t_2; /*这句值得关注 如果在查询工具连续执行 那么只有第一次是执行通过的 因为在同一会话中创建同名表会提示错误。*/
end;$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100
ROWS 1000;
ALTER FUNCTION temptable() OWNER TO postgres;
#5
貌似xxxswl的方法不对,能否给出正确的代码,谢谢,急用
#6
http://www.java2s.com/Code/PostgreSQL/Table/Createatemporarytable.htm
#7
http://www.java2s.com/Code/PostgreSQL/Table/Createatemporarytable.htm
#1
CREATE FUNCTION dup(int) RETURNS TABLE(f1 int, f2 text)
AS $$ SELECT $1, CAST($1 AS text) || ' is text' $$
LANGUAGE SQL;
SELECT * FROM dup(42);
AS $$ SELECT $1, CAST($1 AS text) || ' is text' $$
LANGUAGE SQL;
SELECT * FROM dup(42);
#2
select * from aa8() a(a int,b text,c text,d text)
-- Function: aa8()
-- DROP FUNCTION aa8();
CREATE OR REPLACE FUNCTION aa8()
RETURNS SETOF record AS
$BODY$
declare
sql varchar(1000);
myrec record;
ref refcursor;
rec record;
begin
sql:='select "CustomerId" ';
for myrec in select * from "Cus_Field" loop
sql := sql || ',max(case "FieldId" when ' || myrec."FieldId" ||
' then "FieldValue" end) as ' || myrec."FieldName";
end loop ;
sql := sql || ' from "Cus_CustomerField" group by "CustomerId"';
FOR rec IN execute SQL Loop
RETURN NEXT rec;
END LOOP;
end;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100
ROWS 1000;
ALTER FUNCTION aa8() OWNER TO zw;
-- Function: aa8()
-- DROP FUNCTION aa8();
CREATE OR REPLACE FUNCTION aa8()
RETURNS SETOF record AS
$BODY$
declare
sql varchar(1000);
myrec record;
ref refcursor;
rec record;
begin
sql:='select "CustomerId" ';
for myrec in select * from "Cus_Field" loop
sql := sql || ',max(case "FieldId" when ' || myrec."FieldId" ||
' then "FieldValue" end) as ' || myrec."FieldName";
end loop ;
sql := sql || ' from "Cus_CustomerField" group by "CustomerId"';
FOR rec IN execute SQL Loop
RETURN NEXT rec;
END LOOP;
end;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100
ROWS 1000;
ALTER FUNCTION aa8() OWNER TO zw;
#3
谢谢 ACMAIN_CHM 的回复 但还不是我想要的 说的再具体点
我需要一个postgresql函数 返回一个结果集合 SETOF record 类型
如有一个表中有若干字段 "MyTable" id,age,name,...... 只需要返回其中几个
我想在函数中 创建一个临时变量(临时表) 来存放结果集合 并返回这个临时表
(我的需求是固定的 不用其他方式实现!!!)
语法大意:
CREATE OR REPLACE FUNCTION getfoo()
RETURNS SETOF record AS
$BODY$
declare
declare temptable1 table(id int,age int);
begin
return query select myid,myage into temptable1 from (select * from "MyTable");
end;$BODY$
LANGUAGE 'plpgsql' VOLATILE
ALTER FUNCTION getfoo() OWNER TO postgres;
该如何实现???
我需要一个postgresql函数 返回一个结果集合 SETOF record 类型
如有一个表中有若干字段 "MyTable" id,age,name,...... 只需要返回其中几个
我想在函数中 创建一个临时变量(临时表) 来存放结果集合 并返回这个临时表
(我的需求是固定的 不用其他方式实现!!!)
语法大意:
CREATE OR REPLACE FUNCTION getfoo()
RETURNS SETOF record AS
$BODY$
declare
declare temptable1 table(id int,age int);
begin
return query select myid,myage into temptable1 from (select * from "MyTable");
end;$BODY$
LANGUAGE 'plpgsql' VOLATILE
ALTER FUNCTION getfoo() OWNER TO postgres;
该如何实现???
#4
谢谢大家的解答: 让我知道有很多新鲜的东西值得关注。。。
不给分的原因: 当我在网上找东西的时候 对得分的回复特别关注 如果得分回复与提出的问题不一致 可能会误导寻找答案的人。。。!
本题正解之一:
CREATE OR REPLACE FUNCTION temptable()
RETURNS SETOF record AS
$BODY$
begin
create temporary table "t_2" as select * from "MyTable";
return query select * from "t_2";
drop table t_2; /*这句值得关注 如果在查询工具连续执行 那么只有第一次是执行通过的 因为在同一会话中创建同名表会提示错误。*/
end;$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100
ROWS 1000;
ALTER FUNCTION temptable() OWNER TO postgres;
不给分的原因: 当我在网上找东西的时候 对得分的回复特别关注 如果得分回复与提出的问题不一致 可能会误导寻找答案的人。。。!
本题正解之一:
CREATE OR REPLACE FUNCTION temptable()
RETURNS SETOF record AS
$BODY$
begin
create temporary table "t_2" as select * from "MyTable";
return query select * from "t_2";
drop table t_2; /*这句值得关注 如果在查询工具连续执行 那么只有第一次是执行通过的 因为在同一会话中创建同名表会提示错误。*/
end;$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100
ROWS 1000;
ALTER FUNCTION temptable() OWNER TO postgres;
#5
貌似xxxswl的方法不对,能否给出正确的代码,谢谢,急用
#6
http://www.java2s.com/Code/PostgreSQL/Table/Createatemporarytable.htm
#7
http://www.java2s.com/Code/PostgreSQL/Table/Createatemporarytable.htm