Advertisement
SoWesley

Procedure to split words

Jan 16th, 2015
282
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 1.16 KB | None | 0 0
  1. CREATE OR ALTER PROCEDURE PRO_SEPARA_PALAVRAS (
  2.     APALAVRA VARCHAR(1000),
  3.     AORDEM VARCHAR(4))
  4. RETURNS (
  5.     RESULT VARCHAR(1000))
  6. AS
  7.   DECLARE VARIABLE SUB VARCHAR(1000);
  8.   DECLARE VARIABLE I INTEGER;
  9. BEGIN
  10.   IF (UPPER(:AORDEM) = 'ASC') THEN
  11.   BEGIN
  12.     I = 1;
  13.     RESULT = '';
  14.     SUB = :APALAVRA;
  15.  
  16.     WHILE (I <= CHARACTER_LENGTH(:APALAVRA)) DO
  17.     BEGIN
  18.       IF (SUBSTRING(:SUB FROM 1 FOR 1) = ' ') THEN
  19.       BEGIN
  20.         SUSPEND;
  21.         RESULT = '';
  22.       END
  23.       ELSE
  24.         RESULT = RESULT || SUBSTRING(:SUB FROM 1 FOR 1);
  25.  
  26.       SUB = SUBSTRING(:SUB FROM 2 FOR CHARACTER_LENGTH(:SUB));
  27.  
  28.       I = I + 1;
  29.     END
  30.  
  31.     SUSPEND;
  32.   END
  33.   ELSE
  34.   IF (UPPER(:AORDEM) = 'DESC') THEN
  35.   BEGIN
  36.     RESULT = '';
  37.     SUB = :APALAVRA;
  38.  
  39.     WHILE (CHARACTER_LENGTH(:SUB) > 0) DO
  40.     BEGIN
  41.       IF (SUBSTRING(:SUB FROM CHARACTER_LENGTH(:SUB) FOR 1) = ' ') THEN
  42.       BEGIN
  43.         RESULT = REVERSE(RESULT);
  44.         SUSPEND;
  45.         RESULT = '';
  46.       END
  47.       ELSE
  48.         RESULT = RESULT || SUBSTRING(:SUB FROM CHARACTER_LENGTH(:SUB) FOR 1);
  49.  
  50.       SUB = SUBSTRING(:SUB FROM 1 FOR CHARACTER_LENGTH(:SUB)-1);
  51.     END
  52.  
  53.     RESULT = REVERSE(RESULT);
  54.     SUSPEND;
  55.   END
  56. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement