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
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