ExecuteSqlRaw() 抱怨 SQL 语句无效,但事实并非如此

ExecuteSqlRaw() complains invalid SQL statement, but it's not

我有一个电话:

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 过程。如果您碰巧使用双引号和 lower/mixed 大小写创建了它,您将不得不再次这样做(即用双引号引用它并匹配字母大小写)。

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