Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Erro "Unterminated dollar quote" ao criar a function

Olá.

Ao tentar criar uma function com o exemplo dado em aula, o PostgreSQL está retornando um erro de "Unterminated dollar quote". Gostaria de saber qual o motivo. Obrigada.

create table instrutor (id serial primary key, nome varchar(255) not null, salario decimal(10,2));
insert into instrutor (nome, salario) values ('Vinicius',100);
create function dobro_do_valor(instrutor) returns decimal as $$ 
    select $1.salario * 2 as dobro;
$$ LANGUAGE SQL;

Este é o erro retornado:

ExampleExceptionFormatter: exception message was: Unterminated dollar quote started at position 61 in SQL create function dobro_do_valor(instrutor) returns decimal as $$ 
    select $1.salario * 2 as dobro. Expected terminating $$
Error occurred in:
create function dobro_do_valor(instrutor) returns decimal as $$ 
    select $1.salario * 2 as dobro
3 respostas

Olá, Tatiana, tudo bem?

Você poderia fornecer mais detalhes do seu ambiente? Assim, poderei te ajudar de forma mais objetiva com o seu problema.

  • Qual a versão do pgAdmin e do PostgreSQL você está utilizando?
  • Como realizou a execução dos comandos? Executou cada um separadamente ou selecionou todos para executar?

Pelo erro retornado Tatiana, aparentemente, apenas metade do código de criação da função foi executado, então, indico que selecione todo o código e tente realizar novamente a criação da função.

Aguardo o seu retorno!

solução!

Olá!

Utilizei o Squirrel 3.7.1 e o PostgreSQL Versão 13. Executei todo o comando, selecionando tudo sim. Suspeitei que fosse um problema do Squirrel, pois retirando o ";" do comando SELECT a criação da Function é executada sem erros. Também quando troquei os $$ por ' (aspas simples) funcionou normalmente a execução do comando. Eu trabalho com outros bancos de dados além do PostgreSQL, por isso a confusão, não havia percebido que estava usando o Squirrel nesta aula do curso. Realmente confirmado, no PgAdmin4 o comando funcionou em ambas as formas, com $$ ou com aspas simples.

Muito obrigada e desculpe.

Fico feliz em saber que você conseguiu identificar o problema Tatiana :)

Qualquer nova dúvida é só falar!

Abraços e bons estudos!