`DECLARE CURSOR` requires superuser privileges 
### CrateDB version

5.1.1

### CrateDB setup information

local / cloud logged in as non-superuser with `ALL` privileges on `cluster` level

### Steps to Reproduce

```sql
BEGIN;
DECLARE this_cursor NO SCROLL CURSOR FOR SELECT * FROM sys.summits;
END;
```

### Expected Result

Cursor is created

### Actual Result

```
UnauthorizedException[User "admin" is not authorized to execute the statement. Superuser permissions are required]
```
diff --git a/server/src/main/java/io/crate/auth/AccessControlImpl.java b/server/src/main/java/io/crate/auth/AccessControlImpl.java
index 8a00969d67..4f5a179573 100644
--- a/server/src/main/java/io/crate/auth/AccessControlImpl.java
+++ b/server/src/main/java/io/crate/auth/AccessControlImpl.java
@@ -46,6 +46,7 @@ import io.crate.analyze.AnalyzedCreateTable;
 import io.crate.analyze.AnalyzedCreateTableAs;
 import io.crate.analyze.AnalyzedCreateUser;
 import io.crate.analyze.AnalyzedDeallocate;
+import io.crate.analyze.AnalyzedDeclare;
 import io.crate.analyze.AnalyzedDeleteStatement;
 import io.crate.analyze.AnalyzedDiscard;
 import io.crate.analyze.AnalyzedDropFunction;
@@ -264,6 +265,12 @@ public final class AccessControlImpl implements AccessControl {
             return null;
         }
 
+        @Override
+        public Void visitDeclare(AnalyzedDeclare declare, User user) {
+            declare.query().accept(this, user);
+            return null;
+        }
+
         @Override
         public Void visitSwapTable(AnalyzedSwapTable swapTable, User user) {
             if (!user.hasPrivilege(Privilege.Type.AL, Privilege.Clazz.CLUSTER, null, defaultSchema)) {
diff --git a/server/src/test/java/io/crate/auth/AccessControlMayExecuteTest.java b/server/src/test/java/io/crate/auth/AccessControlMayExecuteTest.java
index db05561b15..878789a202 100644
--- a/server/src/test/java/io/crate/auth/AccessControlMayExecuteTest.java
+++ b/server/src/test/java/io/crate/auth/AccessControlMayExecuteTest.java
@@ -700,4 +700,10 @@ public class AccessControlMayExecuteTest extends CrateDummyClusterServiceUnitTes
         analyze("ANALYZE", user);
         assertAskedForCluster(Privilege.Type.AL);
     }
+
+    @Test
+    public void test_declare_cursor_for_non_super_users() {
+        analyze("DECLARE this_cursor NO SCROLL CURSOR FOR SELECT * FROM sys.summits;", user);
+        assertAskedForTable(Privilege.Type.DQL, "sys.summits");
+    }
 }
['server/src/test/java/io/crate/auth/AccessControlMayExecuteTest.java', 'server/src/main/java/io/crate/auth/AccessControlImpl.java']