ORA-01003: no statement parsed error on executing REVOKE SELECT statement
Posted: Tue 14 Apr 2020 20:59
There seems to be a bug in Devart.Data.Universal.Oracle provider (direct mode). The problem occurs when executing REVOKE SELECT statement, as for instance, in the following sample script:
This script can be successfully executed with some Oracle client application, such as Oracle SQL Developer. But executing this sequence of SQL commands with Oracle provider for dotConnect universal results in the following exception thrown after “REVOKE SELECT ON PDTABLE FROM PDUSER” command:
Currently, we are using dotConnect universal 3.80.1967, but I have also tried 3.80.2109, which seems to be having the same problem.
Code: Select all
CREATE USER PDUSER IDENTIFIED BY secret123;
CREATE TABLE PDTABLE (i int);
GRANT SELECT ON PDTABLE TO PDUSER;
REVOKE SELECT ON PDTABLE FROM PDUSER; --< ORA-01003: no statement
DROP USER PDUSER CASCADE; -- cleanup statements
DROP TABLE PDTABLE;
Code: Select all
---> Devart.Data.Universal.UniException (0x80004005): ORA-01003: no statement parsed
---> Devart.Data.Oracle.OracleException (0x80004005): ORA-01003: no statement parsed
at Devart.Data.Oracle.dh.a(em A_0, Int32 A_1)
at Devart.Data.Oracle.dh.Execute(Int32 OQQ0OCQOQ0, c6 OQ00QCQOQ0)
at Devart.Data.Oracle.cu.a(CommandBehavior A_0, IDisposable A_1, Int32 A_2, Int32 A_3, Boolean A_4)
at Devart.Common.DbCommandBase.ExecuteDbDataReader(CommandBehavior behavior, Boolean nonQuery)
at Devart.Common.DbCommandBase.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
at Devart.Data.Universal.UniCommand.a(CommandBehavior A_0, IDisposable A_1, Int32 A_2, Int32 A_3, Boolean A_4)
at Devart.Data.Universal.UniCommand.a(CommandBehavior A_0, IDisposable A_1, Int32 A_2, Int32 A_3, Boolean A_4)
at Devart.Data.Universal.UniCommand.InternalExecute(CommandBehavior behavior, IDisposable stmt, Int32 startRecord, Int32 maxRecords)
at Devart.Common.DbCommandBase.InternalExecute(CommandBehavior behavior, IDisposable stmt, Int32 startRecord, Int32 maxRecords, Boolean nonQuery)
at Devart.Common.DbCommandBase.ExecuteDbDataReader(CommandBehavior behavior, Boolean nonQuery)
at Devart.Common.DbCommandBase.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader()