Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 的用法 » 存储过程和触发器 » 使用过程、触发器和批处理

 

隐藏过程、函数、触发器和视图的内容

在某些情况下,当您分发应用程序和数据库时,可能不希望透露过程、函数、触发器和视图中包含的逻辑。作为附加的安全手段,您可以使用 ALTER PROCEDURE、ALTER FUNCTION、ALTER TRIGGER 和 ALTER VIEW 语句的 SET HIDDEN 子句来隐藏这些对象的内容。

SET HIDDEN 子句会对关联对象的内容进行模糊处理,使之难以理解,但这些对象仍然可以使用。还可以卸载对象并将其重新装入其它数据库。

修改是无法撤消的,会删除对象的原始文本。因此需要在数据库外保留对象的原始数据源。

使用调试程序进行调试时不会显示过程定义,对过程进行分析时也不会显示数据源。

在已经隐藏的对象上运行上面任何一个语句不会产生任何结果。

要隐藏特定类型的所有对象的文本,您可以使用类似于下面的循环:

BEGIN
    FOR hide_lp as hide_cr cursor FOR
        SELECT proc_name, user_name
        FROM SYS.SYSPROCEDURE p, SYS.SYSUSER u
        WHERE p.creator = u.user_id
        AND p.creator NOT IN (0,1,3)
    DO
        MESSAGE 'altering ' || proc_name;
        EXECUTE IMMEDIATE 'ALTER PROCEDURE "' ||
            user_name || '"."' || proc_name
            || '" SET HIDDEN'
    END FOR
END;
另请参见