SYBASE ASE12.5中存储过程的建立和调用

一、建立存储过程(三个存储过程:up_sendgroup2->up_sendsms_ex2->up_getsmsrepdisplay)

1、建立存储过程up_getsmsrepdisplay

CREATE PROCEDURE up_getsmsrepdisplay(    
@i_sessionid         varchar(100),    
@o_displayall         varchar(100) output    
)    
AS      
BEGIN    
declare @displayone varchar(100)     
declare @counter        int    
    
set @counter=1    
declare cur_smsdisplay cursor for    
select displayname from ncomsmsreptemp    
where sessionid=@i_sessionid    
    
open cur_smsdisplay     
fetch cur_smsdisplay into @displayone     
while(@@sqlstatus=0 and @counter<=3)     
begin     
   set @displayone=ltrim(rtrim(@displayone))    
   if(@counter=1)    
    set @o_displayall=@displayone    
   else    
    set @o_displayall=@o_displayall+','+@displayone    
    
   set @counter=@counter+1    

   fetch cur_smsdisplay into @displayone     
end     
close cur_smsdisplay 
    
if @counter>4    
   set @o_displayall=@o_displayall+'...'    
END

 

 

2、建立存储过程up_sendsms_ex2

CREATE PROCEDURE [dbo].[up_sendsms_ex2]       
-- Add the parameters for the stored procedure here      
@sessionid       Varchar(100),     -- ncomsmsreptemp.sessionid      
@MsgText     Varchar(1024),    -- Example:This is Test Message!      
        @Priority    Int               -- Values: 1=LOW 2=Normal 3=HIGH      
AS      
BEGIN      
declare @SMSID      varchar(100)      
declare @TextSize   int      
       Declare @AccountID Varchar(100)      
DECLARE @displayallname varchar(100)     
         
    --Check SP PASS IN Arguments & Set it's to Default:      
    If (@Priority<>1 and @Priority<>2 and @Priority<>3)      
       SET @Priority=2         --Default Priority is Normal(2)       
      
    --Prepare Some Fields' Values:      
    SET @SMSID=NewID() -- GET NEW GUID      
    SET @TextSize=len(@MsgText)      
    SET @AccountID='sysmobile' --SET in Table 'nComSMSAccount',Must be Exists!!      
      
   --GET DISPLAYALLNAME     
   set @displayallname=''     
   execute up_getsmsrepdisplay @i_sessionid=@sessionid,@o_displayall=@displayallname   output 
     
    --Add SMS Master Information:      
    INSERT INTO ncomsms      
              (smsid,      
               smstype,      
               direction,      
               accountid,      
               fromdisplay,      
               owner,      
               priority,      
               usetemplate,      
               templateid,      
               msgtype,      
               msgtext,      
               pushurl,      
               msgsize,      
               todisplay,      
               boxtype,      
               pirorboxtype,      
               writetime,      
               sendstate,      
               retrycount,      
               sendresult       
              )      
      SELECT @SMSID,      
             1,           --SMSType: 1=Normal SMS 2=Flash SMS 3=WAPPUSH (Must set pushurl)      
             2,           --Direction: 1=Receive 2=SEND OUT      
             @AccountID, --Sender's Account ID      
             ncomsmsaccount.displayname,      
             ncomsmsaccount.childgatecode,      
             @Priority,      
             0,           --Use template? 0=Not USE 1=USE a Template      
             -1,          --template id      
             0,           --MsgType 0=AutoSelect 1=English 2:Chinese      
             @MsgText,      
             '',          --Not Use WAPPUSH      
             @TextSize,      
             @displayallname,     
             2,           -- BoXType: 1=WRITING 2=SENDING 3=SEND 4=RECEIVED 5=DELETED      
             NULL,        --Piror Box Type      
             getdate(),   --WriteTime       
             0,           --Send State 0=Is Ready 1=In Sending Queue      
             0,           --Retry Count      
             0            --Send Result -1:Failed 0:NO_SET 1:SUCCESS 2:Partly SUCCESS      
      FROM ncomsmsaccount      
      where accountid=@AccountID      
     if @@error <>0 return -1      
      
     Return 1 --Return SUCCESS      
END

 

 

3、建立存储过up_sendgroup2

CREATE PROCEDURE up_sendgroup2       
-- Add the parameters for the stored procedure here      
AS      
BEGIN      
declare @msgtext varchar(1024)     
declare @sessionid    varchar(100)      
     
SET @sessionid    =NewID() -- GET NEW GUID      
SET @msgtext =‘存储过程测试'+CAST(GETDATE() as varchar(30))    
     
   exec dbo.up_sendsms_ex2 @sessionid,@msgtext,2     
     
END

 

调用存储过程up_getsmsrepdisplay如下,这是有输入参数和返回参数的情况:

declare @sessionid varchar(100) 
declare @displayall varchar(100) 
select @sessionid ="1001" 
execute up_getsmsrepdisplay @i_sessionid=@sessionid ,@o_displayall=@displayall output
select @displayall


如果没有参数,直接使用execute执行即可,比如要执行up_sendgroup2就可以直接使用

execute up_sendgroup2
 

 

你可能感兴趣的:(Sybase)