我是oracle初学者,想问一下,先到一个表中查询到数据,再将该数据插入到另一张表中的存储过程,应该怎么一次性写完啊???
还有用JOB怎么定时执行啊!!!

解决方案 »

  1.   

    insert into ...select ... from.... 
     
      

  2.   

    CREATE OR REPLACE PROCEDURE 存储过程名字 AS
    BEGIN
           INSERT INTO 插入表select field1...from 查询表
    --注意字段 要一一对准了
    COMMIT;
    END;
      

  3.   

    CREATE OR REPLACE PROCEDURE 存储过程名字 AS
     BEGIN
            INSERT INTO 目标表(字段名1,字段名2,...)
            select field1,field2,...from 表         --这个select语句用来从表中查询到数据,可以是个
                                                              单表查询也可以是一个复杂的多表关联查询
              COMMIT;
     END;
      

  4.   

    CREATE OR REPLACE PROCEDURE 存储过程名字 AS
      BEGIN
             INSERT INTO 目标表(字段名1,字段名2,...)
             select field1,field2,...from 表;         --这个select语句用来从表中查询到数据,可以
                                                                    是个单表查询也可以是一个复杂的多表关联查询
              COMMIT;
      END; 
      

  5.   

    不用存储过程,直接
     
    INSERT INTO ....SELECT .....FROM就行了!!!
      

  6.   

    1、原始需求,如果仅是从一个表向另外一个表插入,可以insert into ....select ... from 
    2、job,可以度娘http://blog.sina.com.cn/s/blog_621a2bdf0100f2uh.html
      

  7.   

    支持6楼的,至于job 的使用
    这里我只简单记述一个创建一个简单的job 
    步骤如下: 
    1、创建一张表g_test 
    create table G_TEST 

    ID     NUMBER(12), 
    C_DATE DATE 

    2、创建一个sequence 
    create sequence G_SEQ 
    minvalue 1 
    maxvalue 999999999999999999999999999 
    start with 141 
    increment by 1 
    cache 20; 3、创建一个存储过程 
    create or replace procedure prc_g_test is 
    begin 
    insert into g_test values(g_seq.nextval,sysdate); 
    end prc_g_test; 4、创建job, 
    使用Submit()过程,工作被正常地计划好。 
    这个过程有五个参数:job、what、next_date、interval与no_parse。 PROCEDURE Submit ( job       OUT binary_ineger, 
    What      IN  varchar2, 
    next_date IN  date, 
    interval  IN  varchar2, 
    no_parse  IN  booean:=FALSE) job参数是由Submit()过程返回的binary_ineger。这个值用来唯一标识一个工作。 
    what参数是将被执行的PL/SQL代码块。 
    next_date参数指识何时将运行这个工作。 
    interval参数何时这个工作将被重执行。 
    no_parse参数指示此工作在提交时或执行时是否应进行语法分析——TRUE 
    指示此PL/SQL代码在它第一次执行时应进行语法分析, 
    而FALSE指示本PL/SQL代码应立即进行语法分析。 在command window窗口中执行下面脚本 
    variable job1 number; 
    begin 
    sys.dbms_job.submit(job => :job, 
    what => 'prc_g_test;', 
    next_date => to_date('22-10-2008 10:06:41', 'dd-mm-yyyy hh24:mi:ss'), 
    interval => 'sysdate+1/1440');--每天1440分钟,即一分钟运行test过程一次 
    commit; 
    end; 
    / ----------------------------------------------------------------------------------
    在plSQL中我的做法是:declare   
    job number;      
    begin
    sys.dbms_job.submit(job,'prc_g_test;',sysdate,'sysdate+1/1440');
    end;
    ----------------------------------------------------------------------------------5、查看创建的job 
    查看相关job信息 
    1、相关视图 
    dba_jobs 
    all_jobs 
    user_jobs 
    dba_jobs_running 包含正在运行job相关信息。 
    如: 
    select * from dba_jobs 6、运行JOB 
    说明:Run()过程用来立即执行一个指定的工作。这个过程只接收一个参数: 
    SQL> begin 
    2  dbms_job.run(:job); 
    3  end; 
    4  / ----------------------------------------------------------------------------------
    在plSQL中我的做法是:
    begin
    dbms_job.run(3017);
    end; 
    ----------------------------------------------------------------------------------7、删除JOB 
    SQL> begin 
    2  dbms_job.remove(:job);--:job可以用dba_jobs.job的值代替如:1198 
    3  end; 
    4  / 
    说明:在sqlplus命令行直接定义变量要variable!!!!