oracle 19C 中 SQL_MACRO 的编译错误

Compilation error for SQL_MACRO in oracle 19C

create or replace function f_get_ids(p_user in nvarchar2)
return nvarchar2 sql_macro(table)
as
begin
  return q'[select id from table1 where user=p_user]';
end;

在 oracle 19.0.0.0.0 版本中执行上述代码时出现以下错误。

错误(1,27):PLS-00103:遇到以下符号之一时遇到符号“(”:;是使用外部确定性parallel_enable流水线聚合的默认authid作为集群顺序result_cache 可访问重写

在 19c 上达到正确的补丁级别后进行简单修复。

因为19c中只有一种类型的宏,所以不需要量化是哪种类型,eg

SQL> create or replace function f_get_ids(p_user in nvarchar2)
  2  return nvarchar2 sql_macro(table)
  3  as
  4  begin
  5    return q'[select id from table1 where user=p_user]';
  6  end;
  7  /

Warning: Function created with compilation errors.

SQL>
SQL>
SQL> create or replace function f_get_ids(p_user in nvarchar2)
  2  return nvarchar2 sql_macro     
  3  as
  4  begin
  5    return q'[select id from table1 where user=p_user]';
  6  end;
  7  /

Function created.

和你在这里问的一样:-)

https://asktom.oracle.com/pls/apex/asktom.search?tag=error-while-executing-sql-macro-in-19c