在sql*plus下直接编译存储过程,不知道系统将存储过程存放到那个文件。我想使用WRAP对我的过程代码加密,但要有文件参数。请高手指教。

解决方案 »

  1.   

    老兄,次序搞错了。应该是先用wrap执行加密,然后再在SQL*PLUS或者其他工具中将存储过程生成到数据库中去。
      

  2.   

    先用PL/sql developer 将存储过程另存为 d:\pro.sql
    然后在 window2000 cmd 或win98 dos 下,
    set NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
    然后
    wrap iname=pro.sql oname=pro.plb然后回到 sql> 下sql>@d:\pro.plb 回车
    这样就可以咯。
      

  3.   

    如何加密Oracle中的存储过程 
    一、dos下
    1、准备工作
    C:>set NLS_LANG=us
    在c:下创建wl.sql文件,内容如下: 
    create or replace procedure wl
    (execlog VARCHAR2)
    AS
    v_sql VARCHAR2(2000);
    v_cnt INTEGER;
    BEGIN
        v_sql:='SELECT count(1)
                FROM USER_ALL_TABLES
                WHERE table_name=''EXECLOG''';
        EXECUTE IMMEDIATE v_sql INTO v_cnt;
        IF v_cnt=0 THEN
        v_sql:='CREATE TABLE execlog(execdate date,execlog varchar2(255))';
        EXECUTE IMMEDIATE v_sql;
        END IF;
        v_sql:='INSERT INTO execlog values(Sysdate,'''||execlog||''')';
        EXECUTE IMMEDIATE v_sql;
    END;
    2、加密
    C:>wrap iname=wl.sql
    3、恢复环境
    C:>C:>set NLS_LANG=二、sql下看看效果
    SQL> execute wl('1 live you ');