Estou tentando obter uma função psql que truncaria um determinado nome de tabela, se existir. Eu tenho tentado várias funções, mas nenhuma delas funcionou até agora. Aqui está o código:
CREATE OR REPLACE FUNCTION truncateIfExists(tableName TEXT)
returns void
as $$
BEGIN
EXECUTE format(
'IF EXISTS (
SELECT *
FROM information_schema.tables
WHERE table_name =' || tableName || '
)
THEN
TRUNCATE tableName;
END IF;
');
END;
$$language plpgsql
Agora, eu posso fazê-lo funcionar em um procedimento simples com um nome codificado:
do $$
begin
IF EXISTS (SELECT *
FROM information_schema.tables
WHERE table_name = genre_epf)
THEN
TRUNCATE genre_epf;
END IF;
end
$$;
Mas não consigo entender como misturar as duas consultas. O que eu estou fazendo errado aqui ?
postgresql
functions
Stanislasdrg Restabelecer Monica
fonte
fonte
TRUNCATE tableName;
. Você está tentando truncar uma tabela chamadatableName
,Respostas:
Use a variável FOUND :
Observe que eu usei em
PERFORM
vez deSELECT
não precisar de uma saída da consulta. Eu quero saber se a consulta retorna qualquer linha (FOUND = true
) ou não (FOUND = false
).fonte