firebird - 创建 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;
下面是错误的一些附加打印屏幕。
解决方案
所以不清楚为什么当我添加一个 psql 变量时会自动授予“特权”,但是当我在编译弹出窗口中取消选中授予的权限然后进行回滚/重新编译时它可以工作。
推荐阅读
- asp.net - 应用程序突然挂起(等待进入 .NET 锁)
- c# - 从共享 ArrayPool 中租用和返回 C# 中的多维数组的正确方法?
- botframework - 如何添加 Http 请求超时?
- .net - 无法找到 .NET Core SDK
- c++ - Qt3D - 在多视口中添加边框
- android-gradle-plugin - 如何将参数从 Gradle 插件传递给 JUnit4 测试运行器?
- sql - SQL 命令 if sum = 0 by criteria
- doctrine - Doctrine querybuilder 添加子查询更改别名
- unity3d - Unity VideoPlayer,如何显示缓冲了多少视频
- java - 如果 else 语句给出错误的输出