/* 01.12.2012 2 Îòïàäàùè ÍÇÎÊ êîäîâå îò ñëåäâàù ïåðèîä */ create or alter procedure SP_SUBSTRING ( SRC varchar(255), START_AT integer, NLEN integer) returns ( RESULT varchar(255)) as declare variable II integer; declare variable VGL varchar(255); declare variable PFX varchar(255); declare variable C char(1); BEGIN /* Version : 1 */ /* Author: LUC, 08.01.2003*/ /* Description: */ /* */ IF ( START_AT <= 0 ) THEN START_AT = 1; IF ( START_AT > 255 ) THEN START_AT = 255; IF ( NLEN > 255 ) THEN NLEN = 255; IF ( NLEN < 1 OR NLEN IS NULL ) THEN NLEN = 1; VGL = ''; RESULT = ''; PFX = ''; IF ( START_AT > 1 ) THEN BEGIN II = 1; WHILE ( II < START_AT ) DO BEGIN PFX = PFX || '_'; II = II + 1; END END II = START_AT; WHILE ( II < NLEN + START_AT ) DO BEGIN /* WHAT DOES THE STRING LOOK LIKE AT THE CURRENT POSITION, I.E. QUERY THE CURRENT CHARACTER */ C = ' '; IF ( SRC LIKE PFX || ' %' ) THEN C = ' '; IF ( SRC LIKE PFX || ' %' ) THEN C = ' '; ELSE IF ( SRC LIKE PFX || 'A%' ) THEN C = 'A'; ELSE IF ( SRC LIKE PFX || 'B%' ) THEN C = 'B'; ELSE IF ( SRC LIKE PFX || 'C%' ) THEN C = 'C'; ELSE IF ( SRC LIKE PFX || 'D%' ) THEN C = 'D'; ELSE IF ( SRC LIKE PFX || 'E%' ) THEN C = 'E'; ELSE IF ( SRC LIKE PFX || 'F%' ) THEN C = 'F'; ELSE IF ( SRC LIKE PFX || 'G%' ) THEN C = 'G'; ELSE IF ( SRC LIKE PFX || 'H%' ) THEN C = 'H'; ELSE IF ( SRC LIKE PFX || 'I%' ) THEN C = 'I'; ELSE IF ( SRC LIKE PFX || 'J%' ) THEN C = 'J'; ELSE IF ( SRC LIKE PFX || 'K%' ) THEN C = 'K'; ELSE IF ( SRC LIKE PFX || 'L%' ) THEN C = 'L'; ELSE IF ( SRC LIKE PFX || 'M%' ) THEN C = 'M'; ELSE IF ( SRC LIKE PFX || 'N%' ) THEN C = 'N'; ELSE IF ( SRC LIKE PFX || 'O%' ) THEN C = 'O'; ELSE IF ( SRC LIKE PFX || 'P%' ) THEN C = 'P'; ELSE IF ( SRC LIKE PFX || 'Q%' ) THEN C = 'Q'; ELSE IF ( SRC LIKE PFX || 'R%' ) THEN C = 'R'; ELSE IF ( SRC LIKE PFX || 'S%' ) THEN C = 'S'; ELSE IF ( SRC LIKE PFX || 'T%' ) THEN C = 'T'; ELSE IF ( SRC LIKE PFX || 'U%' ) THEN C = 'U'; ELSE IF ( SRC LIKE PFX || 'V%' ) THEN C = 'V'; ELSE IF ( SRC LIKE PFX || 'W%' ) THEN C = 'W'; ELSE IF ( SRC LIKE PFX || 'X%' ) THEN C = 'X'; ELSE IF ( SRC LIKE PFX || 'Y%' ) THEN C = 'Y'; ELSE IF ( SRC LIKE PFX || 'Z%' ) THEN C = 'Z'; ELSE IF ( SRC LIKE PFX || 'a%' ) THEN C = 'a'; ELSE IF ( SRC LIKE PFX || 'b%' ) THEN C = 'b'; ELSE IF ( SRC LIKE PFX || 'c%' ) THEN C = 'c'; ELSE IF ( SRC LIKE PFX || 'd%' ) THEN C = 'd'; ELSE IF ( SRC LIKE PFX || 'e%' ) THEN C = 'e'; ELSE IF ( SRC LIKE PFX || 'f%' ) THEN C = 'f'; ELSE IF ( SRC LIKE PFX || 'g%' ) THEN C = 'g'; ELSE IF ( SRC LIKE PFX || 'h%' ) THEN C = 'h'; ELSE IF ( SRC LIKE PFX || 'i%' ) THEN C = 'i'; ELSE IF ( SRC LIKE PFX || 'j%' ) THEN C = 'j'; ELSE IF ( SRC LIKE PFX || 'k%' ) THEN C = 'k'; ELSE IF ( SRC LIKE PFX || 'l%' ) THEN C = 'l'; ELSE IF ( SRC LIKE PFX || 'm%' ) THEN C = 'm'; ELSE IF ( SRC LIKE PFX || 'n%' ) THEN C = 'n'; ELSE IF ( SRC LIKE PFX || 'o%' ) THEN C = 'o'; ELSE IF ( SRC LIKE PFX || 'p%' ) THEN C = 'p'; ELSE IF ( SRC LIKE PFX || 'q%' ) THEN C = 'q'; ELSE IF ( SRC LIKE PFX || 'r%' ) THEN C = 'r'; ELSE IF ( SRC LIKE PFX || 's%' ) THEN C = 's'; ELSE IF ( SRC LIKE PFX || 't%' ) THEN C = 't'; ELSE IF ( SRC LIKE PFX || 'u%' ) THEN C = 'u'; ELSE IF ( SRC LIKE PFX || 'v%' ) THEN C = 'v'; ELSE IF ( SRC LIKE PFX || 'w%' ) THEN C = 'w'; ELSE IF ( SRC LIKE PFX || 'x%' ) THEN C = 'x'; ELSE IF ( SRC LIKE PFX || 'y%' ) THEN C = 'y'; ELSE IF ( SRC LIKE PFX || 'z%' ) THEN C = 'z'; ELSE IF ( SRC LIKE PFX || '0%' ) THEN C = '0'; ELSE IF ( SRC LIKE PFX || '1%' ) THEN C = '1'; ELSE IF ( SRC LIKE PFX || '2%' ) THEN C = '2'; ELSE IF ( SRC LIKE PFX || '3%' ) THEN C = '3'; ELSE IF ( SRC LIKE PFX || '4%' ) THEN C = '4'; ELSE IF ( SRC LIKE PFX || '5%' ) THEN C = '5'; ELSE IF ( SRC LIKE PFX || '6%' ) THEN C = '6'; ELSE IF ( SRC LIKE PFX || '7%' ) THEN C = '7'; ELSE IF ( SRC LIKE PFX || '8%' ) THEN C = '8'; ELSE IF ( SRC LIKE PFX || '9%' ) THEN C = '9'; ELSE IF ( SRC LIKE PFX || '!%' ) THEN C = '!'; ELSE IF ( SRC LIKE PFX || '"%' ) THEN C = '"'; ELSE IF ( SRC LIKE PFX || '$%' ) THEN C = '$'; ELSE IF ( SRC LIKE PFX || '&%' ) THEN C = '&'; ELSE IF ( SRC LIKE PFX || '/%' ) THEN C = '/'; ELSE IF ( SRC LIKE PFX || '(%' ) THEN C = '('; ELSE IF ( SRC LIKE PFX || ')%' ) THEN C = ')'; ELSE IF ( SRC LIKE PFX || '=%' ) THEN C = '='; ELSE IF ( SRC LIKE PFX || '@%' ) THEN C = '@'; ELSE IF ( SRC LIKE PFX || '*%' ) THEN C = '*'; ELSE IF ( SRC LIKE PFX || '~%' ) THEN C = '~'; ELSE IF ( SRC LIKE PFX || '#%' ) THEN C = '#'; ELSE IF ( SRC LIKE PFX || '-%' ) THEN C = '-'; ELSE IF ( SRC LIKE PFX || '+%' ) THEN C = '+'; ELSE IF ( SRC LIKE PFX || '{%' ) THEN C = '{'; ELSE IF ( SRC LIKE PFX || '}%' ) THEN C = '}'; ELSE IF ( SRC LIKE PFX || '[%' ) THEN C = '['; ELSE IF ( SRC LIKE PFX || ']%' ) THEN C = ']'; ELSE IF ( SRC LIKE PFX || 'À%' ) THEN C = 'À'; ELSE IF ( SRC LIKE PFX || 'Á%' ) THEN C = 'Á'; ELSE IF ( SRC LIKE PFX || 'Â%' ) THEN C = 'Â'; ELSE IF ( SRC LIKE PFX || 'Ã%' ) THEN C = 'Ã'; ELSE IF ( SRC LIKE PFX || 'Ä%' ) THEN C = 'Ä'; ELSE IF ( SRC LIKE PFX || 'Å%' ) THEN C = 'Å'; ELSE IF ( SRC LIKE PFX || 'Æ%' ) THEN C = 'Æ'; ELSE IF ( SRC LIKE PFX || 'Ç%' ) THEN C = 'Ç'; ELSE IF ( SRC LIKE PFX || 'È%' ) THEN C = 'È'; ELSE IF ( SRC LIKE PFX || 'É%' ) THEN C = 'É'; ELSE IF ( SRC LIKE PFX || 'Ê%' ) THEN C = 'Ê'; ELSE IF ( SRC LIKE PFX || 'Ë%' ) THEN C = 'Ë'; ELSE IF ( SRC LIKE PFX || 'Ì%' ) THEN C = 'Ì'; ELSE IF ( SRC LIKE PFX || 'Í%' ) THEN C = 'Í'; ELSE IF ( SRC LIKE PFX || 'Î%' ) THEN C = 'Î'; ELSE IF ( SRC LIKE PFX || 'Ï%' ) THEN C = 'Ï'; ELSE IF ( SRC LIKE PFX || 'Ð%' ) THEN C = 'Ð'; ELSE IF ( SRC LIKE PFX || 'Ñ%' ) THEN C = 'Ñ'; ELSE IF ( SRC LIKE PFX || 'Ò%' ) THEN C = 'Ò'; ELSE IF ( SRC LIKE PFX || 'Ó%' ) THEN C = 'Ó'; ELSE IF ( SRC LIKE PFX || 'Ô%' ) THEN C = 'Ô'; ELSE IF ( SRC LIKE PFX || 'Õ%' ) THEN C = 'Õ'; ELSE IF ( SRC LIKE PFX || 'Ö%' ) THEN C = 'Ö'; ELSE IF ( SRC LIKE PFX || '×%' ) THEN C = '×'; ELSE IF ( SRC LIKE PFX || 'Ø%' ) THEN C = 'Ø'; ELSE IF ( SRC LIKE PFX || 'Ù%' ) THEN C = 'Ù'; ELSE IF ( SRC LIKE PFX || 'Ú%' ) THEN C = 'Ú'; ELSE IF ( SRC LIKE PFX || 'Ü%' ) THEN C = 'Ü'; ELSE IF ( SRC LIKE PFX || 'Þ%' ) THEN C = 'Þ'; ELSE IF ( SRC LIKE PFX || 'ß%' ) THEN C = 'ß'; ELSE IF ( SRC LIKE PFX || 'à%' ) THEN C = 'à'; ELSE IF ( SRC LIKE PFX || 'á%' ) THEN C = 'á'; ELSE IF ( SRC LIKE PFX || 'â%' ) THEN C = 'â'; ELSE IF ( SRC LIKE PFX || 'ã%' ) THEN C = 'ã'; ELSE IF ( SRC LIKE PFX || 'ä%' ) THEN C = 'ä'; ELSE IF ( SRC LIKE PFX || 'å%' ) THEN C = 'å'; ELSE IF ( SRC LIKE PFX || 'æ%' ) THEN C = 'æ'; ELSE IF ( SRC LIKE PFX || 'ç%' ) THEN C = 'ç'; ELSE IF ( SRC LIKE PFX || 'è%' ) THEN C = 'è'; ELSE IF ( SRC LIKE PFX || 'é%' ) THEN C = 'é'; ELSE IF ( SRC LIKE PFX || 'ê%' ) THEN C = 'ê'; ELSE IF ( SRC LIKE PFX || 'ë%' ) THEN C = 'ë'; ELSE IF ( SRC LIKE PFX || 'ì%' ) THEN C = 'ì'; ELSE IF ( SRC LIKE PFX || 'í%' ) THEN C = 'í'; ELSE IF ( SRC LIKE PFX || 'î%' ) THEN C = 'î'; ELSE IF ( SRC LIKE PFX || 'ï%' ) THEN C = 'ï'; ELSE IF ( SRC LIKE PFX || 'ð%' ) THEN C = 'ð'; ELSE IF ( SRC LIKE PFX || 'ñ%' ) THEN C = 'ñ'; ELSE IF ( SRC LIKE PFX || 'ò%' ) THEN C = 'ò'; ELSE IF ( SRC LIKE PFX || 'ó%' ) THEN C = 'ó'; ELSE IF ( SRC LIKE PFX || 'ô%' ) THEN C = 'ô'; ELSE IF ( SRC LIKE PFX || 'õ%' ) THEN C = 'õ'; ELSE IF ( SRC LIKE PFX || 'ö%' ) THEN C = 'ö'; ELSE IF ( SRC LIKE PFX || '÷%' ) THEN C = '÷'; ELSE IF ( SRC LIKE PFX || 'ø%' ) THEN C = 'ø'; ELSE IF ( SRC LIKE PFX || 'ù%' ) THEN C = 'ù'; ELSE IF ( SRC LIKE PFX || 'ú%' ) THEN C = 'ú'; ELSE IF ( SRC LIKE PFX || 'ü%' ) THEN C = 'ü'; ELSE IF ( SRC LIKE PFX || 'þ%' ) THEN C = 'þ'; ELSE IF ( SRC LIKE PFX || 'ÿ%' ) THEN C = 'ÿ'; RESULT = RESULT || :C; PFX = PFX || '_'; II = II + 1; IF ( II > 255 ) THEN BEGIN SUSPEND; EXIT; END END SUSPEND; END