복합 문을 작성할 수 있습니까? -mysql?은 mysql에 복합 문을 작성하는 데 도움이 필요합니다.
그것은처럼 나에게 오류를 반환 : 여기
도와주세요
[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DECLARE n INT unsigned DEFAULT 0;
DECLARE i INT unsigned DEFAULT 0;
DECL' at line 40
Sombody 것은 내가 사용하고있는 쿼리입니다
...........................................
IF(tarif='LT')
THEN
CREATE TABLE costSlabs SELECT `Start`,`End`,Cost FROM energy_slabs where SiteId=NEW.SiteID and `Start` < totalUnits;
DECLARE n INT DEFAULT 0;
DECLARE i INT DEFAULT 0;
DECLARE newStart INT;
DECLARE newEnd INT;
DECLARE newCost DOUBLE;
DECLARE finalCost DOUBLE DEFAULT 0;
SELECT COUNT(*) FROM costSlabs INTO n;
SET i=0;
WHILE i<n DO
SELECT `Start`, `End`,Cost INTO newStart,newEnd,newCost FROM costSlabs LIMIT i,1 ;
IF(newEnd<totalUnits)
THEN
SET finalCost = finalCost + ((newEnd-newStart) * newCost);
ELSE
...........................................
답장을 보내 주셔서 감사합니다. 그러나 오류가 표시됩니다. [Err] 1422 - 명시 적 또는 암시 적 커밋은 내장 함수 또는 트리거에서 허용되지 않습니다. 어떤 아이디어 ..? – user1844105
'CREATE TABLE' 문과 같은 DDL 문은 암시 적 커밋을 발생시킵니다. 이것은 트리거의 컨텍스트에서 허용되지 않습니다. 트리거의 디자인에는 몇 가지 다른 중요한 문제가 있습니다. 'SELECT ... LIMIT i, 1'시리즈를 반복하는 것은 비효율적입니다. order by 절이 없으므로 리턴 될 행은 결정적이지 않습니다 (해당 SELECT 문을 실행할 때마다 항상 동일한 행이 반환 될 수 있으며 spec 내에 있어야합니다. 그 전체 혼란은 커서 루프로 대체되어야합니다. 'totalUnits'에 대한 참조가 있지만 어디에도 선언되어 있지 않습니다. – spencer7593
우리는이 방아쇠가 무엇을하고 있는지, 최종 결과가 무엇인지를 알 수 없습니다. 그것이 무엇이든,이 방아쇠는 그것을 잘못하고 있습니다. – spencer7593