1、当SELECT语句未找到记录时,会出现异常。你可以使用异常处理。
如:
select SequenceID into v_SequenceID from PrePayment where ID=i_ID;
exception
 when no_data_found then 
v_sequenceid := 0; --(或其他处理语句)
2、不知道你数据库的nls_date_format是如何设置的?
不过最好使用to_char(sysdate,'yyyy-mm-dd')

解决方案 »

  1.   

    to  snowy_howe(天下有雪) ,第一个问题,如果不用Exception能否用其它的方法捕获到,比如说sqlcode;
    第二个问题:不是第一个字段PeriodID的值substr(to_char(sysdate),1,6)的原因造成的,主要是SequenceID的值LSH_FUNC_GetAgentPrePaymentSeq('2',substr(to_char(sysdate),1,6))造成的,我测试过了,不知道在insert的时候,能否调用自己的函数?
      

  2.   


    select count(*) from PrePayment where ID=i_ID
    先判断记录数是否为0
      

  3.   

    to imtiger(imtiger),你的不位一个好方法,但是在我的函数或者过程中根据条件做出很多类似的这样的select field into var from t whereclause的时候,应该有好的解决方法,期待着有经验的师兄点明
      

  4.   

    sql>var countnum number;
    sql>begin
        select count(*) into :countnum form t where clause;
        if :countnum=1 then
       ...........
        if ....  then
    应该可以的
      

  5.   

    to shukuangren(蜀狂人) ,你这样每次在处理的时候都要根据count来判断,能不能根据其它的方式进行判断?继续等待有经验的人来解决
      

  6.   

    to chanet(牧师),我就根据条件,用select count()也最多一天数据,用cursor不合适吧
      

  7.   

    如果想跟踪sqlcode的值,就先试着取sqlcode的值,看看无记录时那个值是什么,然后再直接根据sqlcode的值作判断处理就行了。