2017-02-17 3 views
1

В моем объявлении функции:Не удается выбрать из объявленной таблицы в postgresql?

$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$; 

Возвращает

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

Что на самом деле существует, так как у меня уже SELECT * INTO это без проблем. Почему я могу сделать SELECT INTO, а не SELECT FROM?

ответ

0

Вы не можете использовать переменную PL/pgSQL в качестве имени таблицы. Это то же самое, что и попытка использовать подготовленный оператор с заполнителем для имени таблицы, который не поддерживается. Заполнитель и переменные могут использоваться только вместо констант.

Вам нужно будет использовать динамический SQL с командой EXECUTE.