Guest User

Untitled

a guest
May 27th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.92 KB | None | 0 0
  1. DROP PROCEDURE IF EXISTS split_string;//
  2.  
  3.  
  4. CREATE PROCEDURE split_string (
  5. IN input TEXT,
  6. IN delimiter VARCHAR(10)
  7. )
  8. SQL SECURITY INVOKER
  9. BEGIN
  10. DECLARE cur_position INT DEFAULT 1 ;
  11. DECLARE remainder TEXT;
  12. DECLARE cur_string VARCHAR(1000);
  13. DECLARE delimiter_length TINYINT UNSIGNED;
  14.  
  15. DROP TEMPORARY TABLE IF EXISTS SplitValues;
  16.  
  17. CREATE TEMPORARY TABLE SplitValues (
  18. value VARCHAR(1000) NOT NULL PRIMARY KEY
  19. ) ENGINE=MEMORY;
  20.  
  21. SET remainder = input;
  22. SET delimiter_length = CHAR_LENGTH(delimiter);
  23.  
  24. WHILE CHAR_LENGTH(remainder) > 0 AND cur_position > 0 DO
  25. SET cur_position = INSTR(remainder, delimiter);
  26.  
  27. IF cur_position = 0 THEN
  28. SET cur_string = remainder;
  29. ELSE
  30. SET cur_string = LEFT(remainder, cur_position - 1);
  31. END IF;
  32.  
  33. IF TRIM(cur_string) != '' THEN
  34. INSERT INTO SplitValues VALUES (cur_string);
  35. END IF;
  36.  
  37. SET remainder = SUBSTRING(remainder, cur_position +
  38. delimiter_length);
  39. END WHILE;
  40. END;
  41. //
  42.  
  43.  
  44. drop procedure IF EXISTS ordoneaza_interese;//
  45.  
  46. CREATE PROCEDURE ordoneaza_interese(IN cid INT)
  47. BEGIN
  48.  
  49. DECLARE done INT DEFAULT 0;
  50. DECLARE rec_cursor TEXT;
  51. DECLARE curs CURSOR FOR select `interese` from users where `comunitate_id`=cid;
  52. DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
  53.  
  54. DROP TEMPORARY TABLE IF EXISTS test1;
  55.  
  56. CREATE TEMPORARY TABLE test1 (
  57. id int(10) unsigned NOT NULL PRIMARY KEY auto_increment,
  58. value TEXT
  59. ) ENGINE=MEMORY;
  60.  
  61. OPEN curs;
  62.  
  63. REPEAT
  64. FETCH curs INTO rec_cursor;
  65. IF NOT done THEN
  66. insert into test1 (id, value) VALUES(NULL, rec_cursor);
  67. END IF;
  68. UNTIL done END REPEAT;
  69.  
  70. CLOSE curs;
  71.  
  72. select * from test1;
  73.  
  74. END;//
  75.  
  76. call ordoneaza_interese(11);
  77.  
  78. #select interese from users where comunitate_id=11
Add Comment
Please, Sign In to add comment