【问题标题】:How to insert data from stored procedure into a new table using postgresql如何使用 postgresql 将存储过程中的数据插入新表
【发布时间】:2021-10-16 17:28:47
【问题描述】:

我已经使用 PGADMIN4 创建了一个存储过程。在 SP 内部,我选择了一个视图表。但是,我希望将存储过程中的数据插入到新表中。我试过下面的代码,但它显示一个错误:

SP 名称:测试

新表名:Customer

Insert into public.Customer exec public.Test

这是我的 SP 代码:

create procedure test()
language plpgsql
as $$
BEGIN
Select * from public.customer_list; 

END; 
$$;

错误:“exec”处或附近的语法错误

【问题讨论】:

  • 1) 您需要将存储过程的代码添加到您的问题中 2) 如果您实际使用的是 SP,它没有 RETURN ,请参见此处 SP return 3) SP需要和CALL一起使用
  • 将您的过程转换为返回表格的函数。过程并不意味着返回结果集
  • @AdrianKlaver 我已经添加了我的 sp 代码
  • 你需要一个函数而不是一个过程。对于这种情况,最简单的方法是RETURN QUERY,请参阅此处Returning 43.6.1.2。 RETURN NEXT 和 RETURN QUERY 并查看示例。然后像Insert into public.Customer select * from public.test();.

标签: postgresql stored-procedures


【解决方案1】:

过程不能在 SQL 中使用。如果您必须有一个存储过程(定义为存储在要执行的数据库中的代码),则更改为 SQL 函数。它返回一个类型。

create function copy_customer_list()
  returns setof customer_list 
  language sql
as $$
   Select * from customer_list; 
$$;  

然后你可以插入到其他表中

insert into customer  
  select * from copy_customer_list();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多