【问题标题】:ExecuteSqlRaw() complains invalid SQL statement, but it's notExecuteSqlRaw() 抱怨无效的 SQL 语句,但事实并非如此
【发布时间】:2021-09-02 14:28:38
【问题描述】:

我有一个电话:

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

_context.Database.ExecuteSqlRaw(BackFill);

我已经在 Oracle SQL Developer 中尝试过该语句,并且它有效。但是,当我尝试通过 ExecuteSqlRaw() 运行它时,Oracle 抱怨抛出 ORA-00900 invalid SQL statement

我做错了什么?谢谢!

更新:

我把SQL语句改成如下:

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

现在,我得到标识符 SYSDBA.BACKFILL 必须声明...但确实如此。

【问题讨论】:

  • 尝试运行select owner, object_name, object_type from all_objects where object_name='BACKFILL' 看看它会说什么
  • @kfinity 我可以在 Oracle SQL Developer 上运行存储过程就好了。

标签: oracle entity-framework-core entity-framework-5


【解决方案1】:

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

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

【讨论】:

  • 我可以在Oracle Sql developer上运行存储过程就好了。
  • 好的,但是 - 作为哪个用户连接?
  • 啊……我的愚蠢……谢谢!我一直认为我是以同一个用户的身份运行它,但我不是...... :)
猜你喜欢
  • 1970-01-01
  • 2011-10-17
  • 2017-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-07
相关资源
最近更新 更多