我用的是Oracle数据库,用Dbexpress控件连接数据库。在Delphi的SQLStoredProc中,已经设置了SqlConnection,可是在StoredProcName中的下拉列表中却没有存储过程可选,是存储过程写错了还是其他什么原因/?请帮忙看一下存储过程,顺便问一下如何在ORACLE中运行我的这个存储过程?
CREATE OR REPLACE  PROCEDURE "CHENYONG"."GET_NEWGUESTID"   
    (returnid out varchar(14)) as
  declare date1 datetime;
  count1 int;--本存储过程用于获取新的客户ID SELECT @date1=chenyong.newguestid.date1,   
        @count1=chenyong.newguestid.count1  
        FROM  chenyong.newguestid; if @@trancount=0 
 begin tran t1;
 else
 save tran t1;
 if (datediff(dd,@date1,getdate())<>0)       UPDATE  chenyong.newguestid
       SET count1 = 1, date1=getdate();
      else
       UPDATE  chenyong.newguestid
       SET count1 = @count1 + 1;
             
  SELECT @date1=chenyong.newguestid.date1,   
              @count1=chenyong.newguestid.count1  
              FROM chenyong.newguestid;
    
      set @returnid='A'+replace(str(DATEPART(yyyy, @date1),4),' ','0')+
replace(str(DATEPART(mm, @date1),2),' ','0')+
replace(str(DATEPART(dd, @date1),2),' ','0')+
replace(str(@count1,4),' ','0');   
 
if @@error=0 
begin
commit tran t1;
return 0
end
else
begin
rollback tran t1;
RAISERROR('生成客户登记号失败!', 1, 2);
              return 1;
endGO

解决方案 »

  1.   

    我写了如下过程,可是有错,请大家帮忙指正一下可以吗?
       ( returnid out varchar(14) ) as
     date1 chenyong.new_guestid.date1%type;
     count1 chenyong.new_guestid.count1%type;--本存储过程用于获取新的客户ID
    begin
     SELECT date1,count1  into date1,count1 FROM  chenyong.new_guestid;
     if date1!=(sysdate,`yyyymmdd`) then       UPDATE  chenyong.new_guestid
           SET count1 = 1,date1=(sysdate,`yyyymmdd`);
          else
     UPDATE  chenyong.new_guestid
       SET count1 =count1 + 1;
                 
     SELECT date1, count1  into date1, count1
       FROM chenyong.new_guestid; 
     end if 
     returnid:='A'||(concat((trunc(sysdate,`dd`),`yyyymmdd),replace(to_char(count1,4),' ','0')));
     end;