Estou lendo a documentação do PostgreSQL pela primeira vez e ao enfrentar funções SQL acho que entendi todos os fundamentos, mas ainda não consigo ver a diferença entre SELECT sql_function(...)
e SELECT * FROM sql_function(...)
e quando usar um ou outro.
relate perguntas
-
Posso ativar o PITR depois que o banco de dados foi usado
-
Práticas recomendadas para executar a replicação atrasada do deslocamento de tempo
-
Os procedimentos armazenados impedem a injeção de SQL?
-
Sequências Biológicas do UniProt no PostgreSQL
-
Qual é a diferença entre a replicação do PostgreSQL 9.0 e o Slony-I?
Você normalmente usa uma função
FROM
se for uma função de retorno de conjunto (SRF). Essas funções retornam um conjunto de resultados em vez de um único valor ou tupla.Mas, confusamente, isso não está escrito em pedra no PostgreSQL:
Você também pode chamar um SRF na
SELECT
lista, como emSELECT f()
.Como diz a documentação :
Você pode usar qualquer função na
FROM
cláusula. Ele é então tratado como um SRF que retorna apenas uma única linha.O primeiro é usado em uma função escalar (ou seja, ele retorna um resultado escalar / valor único), o último é usado em uma função de tabela (uma função que retorna um conjunto de resultados de valores em oposição a um valor único), razão pela qual o sintaxe é selecionar a partir dele em oposição ao anterior.
Solomon Rutzky faz um belo trabalho descrevendo as diferenças entre uma função Scalar e Table em sua resposta a este post do StackOverflow . (É específico do Microsoft SQL Server, mas os conceitos são os mesmos, especialmente para sua pergunta de alto nível neste contexto.)