我需要为内部用户构建非常灵活的存储过程,以了解他们正在做什么。这些人整天都在SQL * Plus窗口中,他们会被迫使用网络表单。
将为这些用户提供一个表单,通过检查过程元数据创建,他们将能够执行如下所示的存储过程:
create or replace
PROCEDURE DEV_UPDATE_TABLE_FOO
(
SET_FIELD IN VARCHAR2
, SET_VALUE IN VARCHAR2
, WHERE_CLAUSE IN VARCHAR2
) AS
BEGIN
UPDATE foo
SET <SET_FIELD>=<SET_VALUE>
where <WHERE_CLAUSE>;
END DEV_UPDATE_TABLE_FOO;
通过一些快速搜索,我没有看到这可能不会导致“提供一个表单,通过检查过程元数据创建的问题”部分问题。
基本上鼓励SQL注入。这意味着,我们希望这些人能够使用他们选择的值更新他们选择的单个字段,并使用他们创建的set子句。他们必须引用值为VARCHAR2等的字符串。
然而,可用于绘制表单的UI的所有内容都是元数据。其他存储过程将更加静态和明智。这很容易。
有什么想法吗?显而易见的答案是“让他们有权访问sql * plus或sqldeveloper等。不幸的是,不可能。”
提前致谢...