【问题标题】:Can PostgreSQL join to a stored procedure?PostgreSQL 可以加入存储过程吗?
【发布时间】:2015-11-23 23:27:31
【问题描述】:

在 SQL Server 和 Oracle 中,不支持加入(或从中选择)返回结果集的存储过程。

在 PostgreSQL 中可以吗?

如果是这样,一个后续问题是:是否可以通过foreign data wrappers 加入 MS SQL Server 数据库中的存储过程??

【问题讨论】:

    标签: postgresql


    【解决方案1】:

    PostgreSQL 可以加入存储过程(函数)。表格和行让我们开始。

    create schema test;
    create table test.test_a (
      id integer primary key
    );
    
    insert into test.test_a values
    (1), (2);
    
    create table test.test_b (
      id integer references test.test_a,
      n integer not null,
      primary key (id, n)
    );
    
    insert into test.test_b values 
    (1, 1), (1, 2), (1, 3), (2, 1), (2, 2);
    

    一个简单的函数。

    create or replace function test.return_test_b ()
      returns table (
                id integer, 
                n integer
              ) as
    $$
        select * from test.test_b
    $$ language sql;
    

    现在你可以直接加入了。

    select A.id, B.n from test.test_a A
    inner join test.return_test_b() B on A.id = B.id;
    
    身份证号 -- 1 1 1 2 1 3 2 1 2 2

    【讨论】:

      猜你喜欢
      • 2012-10-09
      • 2015-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-27
      • 1970-01-01
      • 2020-04-03
      相关资源
      最近更新 更多