create temporary table tb_htsh as select RPAD('',2000) as 合同内容 from  dual;这个语句有什么问题我就想创建一个临时表 tb_htsh  字段名 是 合同内容

解决方案 »

  1.   

    create or replace procedure lj_xw_htsh (cHth varchar2)
    asc1 varchar2 (2000);
    c2 varchar2 (2000);
    c3 varchar2 (2000);
    c4 varchar2 (2000);
    c5 varchar2 (2000);
    c6 varchar2 (2000);
    cCusCode varchar2 (20);
    cPingXiang varchar2(20);
    cHeTongXingZhi varchar2(20);
    cQuDao Varchar2(20);
    cQuYu varchar2(20);
    cKaiShiRiQi char(10);
    cJieShuRiQi char(10);
    begin
    select distinct  '办事处:'|| 办事处 || '          客户编号:' || 客户代码 || '         客户名称:' || 客户名称 into c1 from ljnc_htzc where 合同编号=cHth;
    select distinct '乙方产品经销区域:'|| 经销区域  into c2 from ljnc_htzc where  合同编号=cHth;
    select distinct '乙方合同总额:'|| 总额/10000 || '万元;     合同首单:' || 首单金额/10000 ||'万元。'  into c3 from ljnc_htzc where 合同编号=cHth;
    select distinct '合同保证金:'|| 合同保证金/10000 || '万元;     红花郎专项保证金:' || 红花郎专项/10000 ||'万元;   追加保证金:' || 追加保证金/10000 ||'万元;'
    into c4  from ljnc_htzc where 合同编号=cHth;
    select distinct 特别约定 into c5 from ljnc_htzc where 合同编号=cHth;
    CREATE GLOBAL TEMPORARY table tb_htsh (合同内容 varchar2(2000))  ON COMMIT PRESERVE ROWS;
    insert into tb_htsh (合同内容) values(c1);
    insert into tb_htsh (合同内容) values(c2);
    insert into tb_htsh (合同内容) values(c3);
    insert into tb_htsh (合同内容) values(c4);
    insert into tb_htsh (合同内容) values(c5);
    insert into tb_htsh (合同内容) values(c6);
    select * from  tb_htsh
    end报错误
    错误:PLS-00103: 出现符号 "CREATE"在需要下列之一时:
            begin case declare end
              exception exit for goto if loop mod null pragma raise return
              select update while with <an identifier>
              <a double-quoted delimited-identifier> <a bind variable> <<
              close current delete fetch lock insert open rollback
              savepoint set sql execute commit forall merge pipe
    行:24
    文本:CREATE GLOBAL TEMPORARY table tb_htsh (合同内容 varchar2(2000))  ON COMMIT PRESERVE ROWS;
      

  2.   

    CREATE GLOBAL TEMPORARY table tb_htsh (合同内容 varchar2(2000)) ON COMMIT PRESERVE ROWS;
    你把这句话移到你的存储过程外面去,对你的程序没有影响,因为你是基于事务的临时表,这样你的提交就清空了你此次事务操作的数据。而且对于别的事务是相互隔离的。也就是说,你的每次事务单独操作一张表样。
      

  3.   

    oracle和sqlserver不同,临时表不用在存储过程里面建和普通表一样,先建好.不同的会话不会相互干扰的.
      

  4.   

    错误有2:
    1。创建临时表语句要在创建存储过程之前执行。
    2.select * from tb_htsh
     这个语句放在这里做什么? 一没分号,二没游标!
      

  5.   


    --on commit preserve rows or on commit delete rows
    create global temporary table tb_htsh on commit preserve rows
    as select RPAD('',2000) as 合同内容 from dual