首页 > 解决方案 > 创建 PSQL 变量时出现错误:“在不允许的过程上使用 GRANT OPTION”

问题描述

我们正在为 interbase-firebird 和 Firebird 3.0.5 使用 SQL 管理器。我们正在创建一个程序并且工作正常。

但是,从我们将 psql 变量添加到过程中的那一刻起,我们得到以下错误。当我们删除变量时,可以再次执行该过程。在已添加的变量下方(也请参见下图)。

  Declare variable ikke integer;

错误消息说:

不允许在程序上使用授予选项。

详细的错误信息说:

授予对“文本”的引用以使用授予选项来处理 GETTEXTCAINING;

因此,似乎通过使用 psql 变量,添加了从表“TEXT”到存储过程的引用,这显然是不允许的。

所以,这听起来像是一个许可的事情。但是,当我们授予该过程的权限时,参考区域是灰色的,因此我们无法授予权限,就像我们在执行级别所做的那样。

**在此处输入图片描述** 如果我们查看表格文本上的权限级别,则会给出参考权限,但是不可能添加“具有授予的权限”(手形图标)。

在此处输入图像描述

我不知道问题是什么以及如何解决它,有什么想法吗?

更新 27/02/2012 如果我将相同的代码添加到执行块中,效果很好。有任何想法吗?

execute block
RETURNS(ID BIGINT, TEXTNAME VARCHAR(1000))
AS
DECLARE ikke VARCHAR(50);
BEGIN
 Id = 0;
 Textname = '';
 ikke = '%a%';
  FOR
 SELECT "ID", "enUS" FROM "Text" WHERE "enUS" like :ikke INTO :Id, :Textname
 DO
 BEGIN
    SUSPEND;
 END
END;

下面是错误的一些附加打印屏幕。

执行存储过程时的错误消息

详细的错误信息

标签: firebirdproceduresql-managerfirebird-psql

解决方案


所以不清楚为什么当我添加一个 psql 变量时会自动授予“特权”,但是当我在编译弹出窗口中取消选中授予的权限然后进行回滚/重新编译时它可以工作。


推荐阅读