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 权限。
我有一个电话:
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 权限。