ExecuteSqlRaw() 抱怨无效的 SQL 语句,但它不是

问题描述

我有一个电话:

BackFill = "EXEC SYSDBA.BACKFILL('64907RM9')";

_context.Database.ExecutesqlRaw(BackFill);

我已经在 Oracle sql Developer 中尝试了该语句,并且它有效。但是,当我尝试通过 ExecutesqlRaw() 运行它时,Oracle 抱怨抛出一个 ORA-00900 无效的 sql 语句

我做错了什么?谢谢!

更新:

我将 sql 语句更改为以下内容

begin SYSDBA.BACKFILL('64907RM9'); end;

现在,我得到标识符 SYSDBA.BACKFILL 必须声明...但它是。

解决方法

这意味着用户 SYSDBA 不拥有 BACKFILL 过程。如果您万一使用双引号和小写/混合大小写创建它,您将不得不再次这样做(即使用双引号引用它并匹配字母大小写)。

否则,如果您以另一个用户(不是 SYSDBA)的身份运行它,请确保 SYSDBA 授予您对它的 EXECUTE 权限。