Я пытаюсь создать хранимую процедуру, но всегда получаю ошибку при сохранении. Я пробовал объявление в разных порядках, но получаю одну и ту же ошибку, или верстак закрывается без ошибок.
Эта процедура должна сохранить datedif из разных полей в разных таблицах в одну таблицу. другая хранимая процедура должна затем записать «фактические» даты в эти поля после восстановления базы данных из резервной копии. это должно быть для демонстрационной базы данных
таблица резервных копий 'datedifs' содержит
'datedifs', 'tabelle', 'varchar(200)'
'datedifs', 'feld', 'varchar(200)'
'datedifs', 'idfeld', 'varchar(200)'
'datedifs', 'idwert', 'varchar(200)'
'datedifs', 'DateDif', 'int(11) unsigned'
'datedifs', 'bemerkung', 'varchar(400)'
, и здесь код
CREATE PROCEDURE `dumpDateDiffs` ()
BEGIN
DECLARE idFeld VARCHAR(30);
DECLARE cursor_i CURSOR FOR SELECT TABLE_NAME, COLUMN_NAME, COLUMN_TYPE from information_schema.columns WHERE (Column_Type LIKE '%time%' or Column_Type LIKE '%date%') AND TABLE_SCHEMA = 'pldemo'
AND TABLE_NAME IN ('angebote', 'ansprechpartner', 'benutzer', 'kontaktblog', 'projekte', 'rechnungen','saetzealt','stundenint');
DECLARE done INT DEFAULT FALSE;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
DELETE FROM datedifs WHERE NOT tabelle IS NULL;
OPEN cursor_i;
read_loop: LOOP
FETCH cursor_i INTO cursor_TABLE_NAME, cursor_COLUMN_NAME, cursor_COLUMN_TYPE;
IF done THEN
LEAVE read_loop;
END IF;
/**INSERT INTO table_B(ID, VAL) VALUES(cursor_ID, cursor_VAL);**/
CASE cursor_TABLE_NAME
WHEN 'angebote' then SET idfeld = 'ID_Angebot'; SET idfeld2 = '';
WHEN 'ansprechpartner' then SET idfeld = 'idAnsprechpartner';
WHEN 'benutzer' then SET idfeld = 'uid';
WHEN 'kontaktblog' then SET idfeld = 'ID';
WHEN 'projekte' then SET idfeld = 'prnum';
WHEN 'rechnungen' then SET idfeld = 'id';
WHEN 'saetzealt' then SET idfeld = 'datedifID';
WHEN 'stundenint' then SET idfeld = 'datedifID';
ELSE SET idfeld = ''; INSERT INTO datedifs (tabelle, feld, idfeld, idwert, DateDif) VALUES('idFeld-Fehler', cursor_TABLE_NAME);
END CASE;
IF idfeld <> '' then
INSERT INTO datedifs (tabelle, feld, idfeld, idwert, DateDif)
SELECT '''' + cursor_TABLE_NAME + '''' as 'tabelle', '''' + cursor_COLUMN_NAME + '''' AS 'feld', '''' + idfeld + '''' as 'idfeld', idfeld as 'idwert', DATEDIFF(NOW(),cursor_COLUMN_NAME) AS 'DateDif'
FROM cursor_TABLE_NAME WHERE NOT cursor_COLUMN_NAME IS NULL;
END IF;
/**INSERT INTO datedifs (tabelle, feld, idfeld, idwert, DateDif) VALUES(cursor_TABLE_NAME, cursor_COLUMN_NAME, cursor_VAL);**/
/**INSERT INTO datedifs VALUES(cursor_TABLE_NAME, cursor_COLUMN_NAME, cursor_VAL);**/
END LOOP;
CLOSE cursor_i;
END
может кто-нибудь помочь?
большое спасибо за каждый совет;)