1

假设我已经存储了函数 foobar:

create or replace function foobar(
  out p_foo varchar,
  out p_bar varchar
)
returns record as $func$
begin
  p_foo := 'foo';
  p_bar := 'bar';
end;
$func$ language plpgsql;

从 ecpg 程序调用此函数的惯用方式是什么?到目前为止我发现的最好的是

EXEC SQL SELECT (foobar()).p_foo, (foobar()).p_bar into :foo,:bar;

或者

EXEC SQL SELECT (y).p_foo, (y).p_bar into :foo,:bar from (select foobar() y) x;

但这似乎很笨拙。

4

2 回答 2

1

记住空值,添加指标变量。

例子:

EXEC SQL BEGIN DECLARE SECTION;
  :foo_ind short;
EXEC SQL END DECLARE SECTION;

EXEC SQL SELECT p_foo, p_bar INTO :foo :foo_ind, :bar :bar_ind FROM foobar();

foo  = (foo_ind < 0) ? 0:foo;
于 2016-07-26T15:53:21.433 回答
0
EXEC SQL SELECT p_foo, p_bar INTO :foo, :bar FROM foobar();
于 2016-07-12T08:00:44.587 回答