Sql 过程的实际语法

Sql 过程的实际语法,sql,database,postgresql,stored-procedures,Sql,Database,Postgresql,Stored Procedures,错误:查询没有结果数据的目标 提示:如果要放弃选择的结果,请改用“执行”。上下文:PL/pgSQL函数dataret()位于SQL语句SQL状态的第4行:42601 我已经用postgreSQl 11编写了过程代码。但是在调用过程时,它给出了这个错误 create or replace procedure dataret() language plpgsql as $$ declare begin select * from public.score; end $$; 我希望输出能够从scor

错误:查询没有结果数据的目标 提示:如果要放弃选择的结果,请改用“执行”。上下文:PL/pgSQL函数dataret()位于SQL语句SQL状态的第4行:42601

我已经用postgreSQl 11编写了过程代码。但是在调用过程时,它给出了这个错误

create or replace procedure dataret()
language plpgsql
as $$
declare
begin
select * from public.score;
end $$;

我希望输出能够从score表中检索所有列,但我遇到了这个错误。

如果要返回结果,请使用函数,而不是过程

您也不需要PL/pgSQL,SQL函数将更加高效:

create or replace function dataret()
  returns setof public.score
  language sql
as $$
select * from public.score;
$$;
然后使用:

select *
from dataret();

尝试手册中的示例,然后从那里开始工作。。。您得到错误是因为您使用的是SELECT,结果无处可去。如果要执行某些查询并放弃结果,则需要使用关键字perform代替SELECT。带有\u no\u名称的\u horse\u是正确的,您需要一个函数,但在SELECT语句之前需要一个RETURN查询或RETURN NEXT。但我想编写一个过程来检索表“score”中的所有列。我应该如何在POSTGRESQL 11中实现它。。。。!!!有没有办法做到这一点。。请共享它。@user11044097:如果要从过程返回数据,则过程是错误的。函数是正确使用的东西。