반응형
절차에 대한 각 대안에 대한 MySQL
제 문제는 꽤 간단합니다.자리가 있습니다.sets
제품 세트(예를 들어 컴퓨터, 마우스, 키보드 등 겉으로 보기에 더 많은 제품)를 저장합니다. M:N을 사용하여 연결됩니다.sets_products
의 테이블.products
table. 제품마다 파라미터가 있을 수 있습니다(다시 연결 M:N).
모든 파라미터를 문자열로 생성하는 프로시저가 있습니다(검색 캐시의 경우 'hdd:120GB, LCD:1440:900, ...' 등). 하지만 이제는 해당 세트의 제품들을 순환시켜 각각의 프로시저를 호출해야 합니다.PHP로 할 수 없습니다. 트리거에 사용되기 때문입니다.
이와 같은 것을 사용하고 싶습니다(pseudo SQL)
FOREACH(SELECT products_id FROM sets_products WHERE set_id = 1)
generate_parameter_list(product_id,@result)
@param = CONCAT(@param,",",@result);
END FOREACH;
MySQL에서 이 작업을 수행할 수 있습니까?
커서에 대한 mysql 참조입니다.그래서 아마 이런 일이 아닐까 생각합니다.
DECLARE done INT DEFAULT 0;
DECLARE products_id INT;
DECLARE result varchar(4000);
DECLARE cur1 CURSOR FOR SELECT products_id FROM sets_products WHERE set_id = 1;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
OPEN cur1;
REPEAT
FETCH cur1 INTO products_id;
IF NOT done THEN
CALL generate_parameter_list(@product_id, @result);
SET param = param + "," + result; -- not sure on this syntax
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
-- now trim off the trailing , if desired
이는 MySQL로 수행할 수 있지만 매우 직관적이지 않습니다.
CREATE PROCEDURE p25 (OUT return_val INT)
BEGIN
DECLARE a,b INT;
DECLARE cur_1 CURSOR FOR SELECT s1 FROM t;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET b = 1;
OPEN cur_1;
REPEAT
FETCH cur_1 INTO a;
UNTIL b = 1
END REPEAT;
CLOSE cur_1;
SET return_val = a;
END;//
이 가이드를 확인하십시오: mysql-store procedures.pdf
언급URL : https://stackoverflow.com/questions/1775521/mysql-foreach-alternative-for-procedure
반응형
'programing' 카테고리의 다른 글
mysql 사용자가 존재하는지 확인하는 중 (0) | 2023.10.10 |
---|---|
Powershell Web Admin Commandlets로 IIS 사이트의 앱 풀을 변경하는 방법 (0) | 2023.10.10 |
AngularJsngIf로 인해 지시문 내부의 요소를 찾을 수 없습니다. (0) | 2023.10.10 |
MySQL 쉼표 문자열을 임시 테이블로 분리 (0) | 2023.10.10 |
jQuery tract vs prop? (0) | 2023.10.10 |