602SQL-Úplná dokumentace Index  

Příklad příjmu zásilky

Příklad v jazyce SQL serveru (Windows):

(funkce pro spolupráci s poštou nevyvolají výjimku - nelze zachytit handlerem)

PROCEDURE `PrijmiMail`();
BEGIN
   DECLARE err,i  INT;
   DECLARE box    INT;
   DECLARE id_zas,lsize INT;
   DECLARE fname  CHAR(255);
   SET err = InitWBMail('sql602test','');
   IF err = 0 THEN BEGIN
     SET err = MailOpenInBox(box);
     IF err = 0 THEN BEGIN
       CALL MailBoxLoad(box,3);
       FOR Zas AS CURSOR FOR
         SELECT * FROM _Sysext._Inboxmsgs WHERE Subject='Data'
       DO 
       BEGIN
          SET id_zas = Zas.id;
          CALL MailBoxGetMsg(box,id_zas);
          SET lsize = Zas.size;
          IF lsize > 0 THEN
// ... práce s textem dopisů
          END IF;
          CALL MailBoxGetFilInfo(box,id_zas);            
          SET i = 0;
          FOR ZasFil AS CURSOR FOR
            SELECT * FROM _Sysext._Inboxfiles WHERE id=id_zas
          DO 
          BEGIN
            SET fname = ZasFil.name;
            WHILE POSITION('\' IN fname)>0 DO 
               CALL StrDelete(fname,1,POSITION('\' IN fname));  
            END WHILE;
            SET fname = 'D:\tempdir\wbdata\'||fname;
            SET Err = MailBoxSaveFileAs(box,id_zas,i,'',fname);
            IF Err > 0 THEN
              CALL Log_write('Chyba při ukládání souboru '+int2str(Err));
            END IF;
            SET i = i+1;
          END;
          END FOR;
          CALL MailBoxDeleteMsg(box,Zas.id,FALSE);
       END;
       END FOR;
       CALL MailCloseInBox(box);
     END; ELSE 
       CALL Log_write('Chyba při otevírání schránky '+int2str(Err)); 
     END IF;
     CALL CloseWBMail();
   END; ELSE 
     CALL Log_write('Chyba při inicializaci '+int2str(Err)); 
   END IF;
END
Poznámky:

Procedura nepůjde přeložit, pokud neexistují tabulky pro příjem pošty. Tabulky lze vytvořit např. pomocí funkce MailCreInBoXTables.