2017-02-17 6 views
1

postgresqlで宣言されたテーブルをSELECT FROMできませんか?私の関数宣言で

$function$ 
declare 

alllogins schema.EmployeeLogin; 
nologins schema.Employee; 

begin 

SELECT * INTO alllogins FROM schema.EmployeeLogin; 
SELECT * INTO nologins FROM schema.Employee AS a WHERE NOT EXISTS 
    (SELECT 1 FROM alllogins WHERE schema.EmployeeId = a.EmployeeId); 

end; 
$function$; 

戻り、私は問題もなく、すでにSELECT * INTOそれを持っているので、実際には、存在する

ERROR: relation "alllogins" does not exist 
LINE 1: ...ema.Employee AS a WHERE NOT EXISTS (SELECT 1 FROM alllogins ... 
                  ^

。なぜ私は SELECT INTOで、 SELECT FROMではないのですか?

答えて

0

PL/pgSQL変数をテーブル名として使用することはできません。これは、サポートされていないテーブル名のプレースホルダを持つプリペアドステートメントを使用しようとするのと同じです。プレースホルダと変数は、定数の代わりにのみ使用できます。

EXECUTEコマンドで動的SQLを使用する必要があります。

関連する問題