현재 실행할 쿼리를 결정하기 위해 case 문을 사용하는 저장 프로 시저를 작성하는 중입니다. 내부 쿼리 중 하나는 case 식이며 변경된 프로 시저를 저장하려고 할 때마다 구문 오류가 발생합니다. 프로 시저가 case 표현식 없이는 정상적으로 저장되지만 일단 추가되면 실패합니다. 식 자체의 구문이 정확하다는 것을 알고 있으므로 case식이 case 문 내부에서도 허용되는지 궁금합니다.MySQL - 저장 프로 시저 - Case 문 내부에서 Case 식 사용?
예 :
CASE
WHEN x = 1 THEN
SELECT
5 AS 'Col1',
CASE
WHEN y = 5 THEN 2
ELSE 0
END AS 'Col2'
FROM table
WHERE 1=1
;
WHEN x = 2 THEN
SELECT
*
FROM table2
;
ELSE
SELECT
*
FROM table3
;
END CASE;
어떤 도움을 크게 감상 할 수있다. case 문 안에 case 표현식을 사용할 수 있습니까? 그렇다면 포맷이 다르게 적용됩니까? 이걸 어떻게 작동시킬 수 있니?
감사합니다.
당신은 원하는대로 문장을 중첩 할 수 있지만, 그 점을 반대하십시오. 스파게티 논리의 정의가 대부분이기 때문에. –
당신이하려는 것은 무엇이든, 이것은 당신 시스템의 나쁜 선례로 간주 될 수 있습니다. – Drew
우리는 특정 보고서를 자동화하고 있습니다. 프로 시저에 대한 템플리트 피드에 따라 다른 조회 선택이 사용됩니다. 문법에 문제가 있습니까? 문장 내에 문장을 넣을 수 있다면 구문 오류가 있다고 말하는 이유는 무엇입니까? – WoofDg79