"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como resolver erros de “string não terminada com cotação em dólar” em funções PostgreSQL com Goose?

Como resolver erros de “string não terminada com cotação em dólar” em funções PostgreSQL com Goose?

Publicado em 17/11/2024
Navegar:373

How to Resolve \

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;
Tutorial mais recente Mais>

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