String sem terminação com cotação em dólar: resolvendo erros com ponto e vírgula
No contexto da criação de uma função PostgreSQL com Goose, este artigo aborda um erro encontrado ao processar uma instrução complexa dentro do corpo da função. O erro, relatado pela biblioteca pq, indica que uma string entre aspas permanece sem terminação.
Para resolver esse problema, observe que instruções complexas com ponto e vírgula requerem anotação usando "-- goose StatementBegin" e "-- goose StatementEnd" anotações, conforme a documentação do Goose. Essas anotações ajudam o Goose a gerenciar ponto e vírgula incorporados em instruções SQL, evitando erros de libpq.
Aplicar essas anotações ao exemplo de código fornecido resolve o erro:
CREATE OR REPLACE FUNCTION add_userlocation(user_id INT, location_id INT) RETURNS VOID AS $BODY$ -- goose StatementBegin BEGIN LOOP UPDATE userslocations SET count = count 1 WHERE userid = user_id AND locationid = location_id; IF found THEN RETURN; END IF; BEGIN INSERT INTO userslocations(userid,locationid, count) VALUES (user_id, location_id, 1); RETURN; EXCEPTION WHEN unique_violation THEN END; END LOOP; -- goose StatementEnd END; $BODY$ LANGUAGE plpgsql;
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3