2016-10-12 10 views
0

SELECT INTOをplpgsqlプロシージャで使用しようとしています。plpgsql PROCEDUREでSELECT INTOを使用するには?

CREATE OR REPLACE FUNCTION reset_data() 
RETURNS void AS $$ 
BEGIN 
DROP TABLE IF EXISTS experiment; 
SELECT * INTO experiment FROM original; 
END; 
$$ LANGUAGE plpgsql; 

これはエラーになります:

ERROR: "experiment" is not a known variable 
LINE 5: SELECT * INTO experiment FROM original; 
        ^

********** Error ********** 

ERROR: "experiment" is not a known variable 
SQL state: 42601 
Character: 113 

どうやら、私たちは次のようにSELECT INTOを使用することはできません。どうやってやるの?

答えて

1

select intoを使用して、select文に基づいてテーブルを作成することはお勧めできません。

create table as(標準準拠)を使用することをお勧めします。

select into explicitly mentions PL/pgSQL as one of the reasonsため

ドキュメント:

CREATE TABLE AS is functionally similar to SELECT INTO . CREATE TABLE AS is the recommended syntax, since this form of SELECT INTO is not available in ECPG or PL/pgSQL, because they interpret the INTO clause differently

だからあなたの関数は次のようになります。

CREATE OR REPLACE FUNCTION reset_data() 
RETURNS void AS $$ 
BEGIN 
    DROP TABLE IF EXISTS experiment; 
    create table experiment 
    as 
    SELECT * FROM original; 
END; 
$$ LANGUAGE plpgsql; 
関連する問題