SQL009. Формирование штрих-кода EAN13 по коду записи в таблице

Версии сервера

0.91.01.5.31.5.41.5.52.02.0.32.0.42.12.53.0
--------ДаДаДа

Доступно в

PSQL

Описание

Пример

CREATE PROCEDURE ID2EAN13 (
  PREFIX  VARCHAR(10)
 ,ID      INTEGER
) RETURNS (
  BARCODE VARCHAR(13)
)AS
  DECLARE VARIABLE N INTEGER;
BEGIN
  BARCODE = PREFIX || LPAD(ID, 12 - CHAR_LENGTH(PREFIX), '0');

  N = (CAST (SUBSTRING (BARCODE FROM  2 FOR 1) AS INTEGER)+
       CAST (SUBSTRING (BARCODE FROM  4 FOR 1) AS INTEGER)+
       CAST (SUBSTRING (BARCODE FROM  6 FOR 1) AS INTEGER)+
       CAST (SUBSTRING (BARCODE FROM  8 FOR 1) AS INTEGER)+
       CAST (SUBSTRING (BARCODE FROM 10 FOR 1) AS INTEGER)+
       CAST (SUBSTRING (BARCODE FROM 12 FOR 1) AS INTEGER)
      ) * 3+
       CAST (SUBSTRING (BARCODE FROM  1 FOR 1) AS INTEGER)+
       CAST (SUBSTRING (BARCODE FROM  3 FOR 1) AS INTEGER)+
       CAST (SUBSTRING (BARCODE FROM  5 FOR 1) AS INTEGER)+
       CAST (SUBSTRING (BARCODE FROM  7 FOR 1) AS INTEGER)+
       CAST (SUBSTRING (BARCODE FROM  9 FOR 1) AS INTEGER)+
       CAST (SUBSTRING (BARCODE FROM 11 FOR 1) AS INTEGER);

  N = MOD(N, 10);
  IF(N > 0)THEN N = 10 - N;

  BARCODE = BARCODE || CAST(N AS VARCHAR(20));

  SUSPEND;
END

См. также

Автор

Ivan_Pisarevsky, http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=840413&msg=10461073

Обсуждение