oracle 如何解决liquibase中的无效字符数据库异常

lb3vh1jj  于 2023-05-06  发布在  Oracle
关注(0)|答案(2)|浏览(269)

我有以下Liquibase查询:

begin  
for x in (select table_name from dba_tables where owner='${schema}') loop  
  execute immediate 'grant select, delete on ${schema}.' || x.table_name || ' to ${schema}';  
end loop;
end;
/

这在SQL Developer中运行良好。但是当从Liquibase运行时,我得到以下错误:
liquibase.exception.DatabaseException:ORA-00911:无效字符
ORA-06512:第3行
在XML变更集中,我指定了endDelimiter="/”,根据错误,问题出在第3行,即执行语句。
我试着做了一些实验,比如从execute语句的末尾删除分号。但都没有用。

mzsu5hc0

mzsu5hc01#

  • Liquibase还支持yaml格式,更适合嵌入复杂的SQL/PLSQL代码。
  • 此上下文中的“/”不是PL/SQL语法的一部分。它是sqlplus/SQLEdeveloper程序的指令,用于划分要执行的PL/SQL块的末尾。如果您不使用sqlplus并且只有一个PL/SQL块,则可以省略它。
  • 给自己特权是没有意义的。你创建了这些表,你拥有它们,你已经拥有了所有的特权。
9rbhqvlz

9rbhqvlz2#

您是否在Liquibase执行时提供${schema}的值?

相关问题