错误主要处在
 insert into l_shb(QualityID,Batch,NDate,VarietyID) values(m_QualityID,m_Batch,m_NDate,m_VarietyID);
其中l_shb是临时表

解决方案 »

  1.   

    这么写在sql/plus中可以,但放到过程中就不行了
          insert into l_shb(QualityID,Batch,NDate,VarietyID)   
          select QualityID,Batch,NDate,VarietyID from YW_YSJL WHERE QualityID=m_QualityID and Batch=m_Batch and NDate=m_NDate;
      

  2.   

    用动态sql
    execute immediate 'insert into l_shb(...';
      

  3.   

    没有发现任何错误信息啊。哪里能得到这些错误信息?
    感谢bzszp(SongZip)  你说的很对。
       
      

  4.   

    你在外面执行
    CREATE  GLOBAL  TEMPORARY  TABLE  l_shb(QualityID  char(5),Batch  number(3),NDate  date,VarietyID  char(4))  ON  COMMIT  PRESERVE  ROWS';  
    创建好临时表
    不要再存储过程里面创建
    这样应该就没问题了。
      

  5.   

    执行时第40行41行错误
      m_str:='CREATE GLOBAL TEMPORARY TABLE l_shb(QualityID char(5),Batch number(3),NDate date,VarietyID char(4)) ON COMMIT PRESERVE ROWS;';
      execute immediate m_str;
    哪里错了?
      

  6.   

    执行的时候出错?
    不是编译的时候?注意,oracle中的临时表不使用过以后自动drop的
    你重复执行的话,当然会有问题用show error命令查看详细信息
      

  7.   

    就是我说的这个原因
    oracle跟sql server有区别啊。
    :)