从视图中隐藏sql

时间:2013-11-29 14:49:50

标签: oracle hide obfuscation protection materialized-views

由于种种原因,我们正在最大程度地保护我们的知识产权,我们已经混淆并包含了我们的逻辑。一切都运行良好。

我们对这些观点感到担忧。在某些情况下,我们会根据客户的具体需求向客户提供一些意见。这样我们就能为他们提供正确的结果。否则,他们有时会尝试构建自己的sql并得到错误的答案。

是否可以根据包装或程序填写物化视图?我知道只有一个函数可以返回一些东西,但我可能会遗漏一些东西。我的实际选择是通过程序填写表格,但我对此感到不舒服。

我们实际上正在使用Oracle 11

欢迎任何想法。谢谢!

1 个答案:

答案 0 :(得分:0)

您可以提供一个重新嵌套表格的函数。

CREATE TABLE SECRET_TABLE (col_1 NUMBER, col_2 VARCHAR2(10));
CREATE OR REPLACE TYPE  t_secret_table_rec AS OBJECT (col_1 NUMBER, col_2 VARCHAR2(10));
CREATE OR REPLACE TYPE t_secret_table AS TABLE OF  t_secret_table_rec;

CREATE OR REPLACE FUNCTION GetData RETURN t_secret_table AS
    res t_secret_table;
BEGIN
    -- Wrap this function
    SELECT t_secret_table_rec(col_1,  col_2)
    BULK COLLECT INTO res
    FROM SECRET_TABLE;
    RETURN res;
END;

然后你可以选择这样的数据:

SELECT * FROM TABLE(GetData);

然而,这是相当费力的,你可能会遇到一些与性能有关的问题。