Ich führe erfolgreich eine Abfrage aus, indem ich die Spaltennamen einer Tabelle im information_schema auswähle, aber wenn ich die gleiche Abfrage in der gespeicherten Prozedur verwende, um sie mit einem Cursor zu verwenden, dann ist das information_schema unbekannt. Kann mir jemand den Grund sagen und mir helfen, das Problem zu lösen? Dank ist die Abfrageinformation_schema unbekannt in einer Prozedur
SELECT column_name
FROM information_schema.columns
WHERE table_schema = 'database_name'
AND table_name='Table_name';
Und hier ist das Verfahren.
DELIMITER $$
CREATE PROCEDURE build_column_names_str (INOUT column_list varchar(4000))
BEGIN
DECLARE v_finished INTEGER DEFAULT 0;
DECLARE v_column varchar(100) DEFAULT "";
-- declare cursor for column names
DEClARE column_cursor CURSOR FOR
SELECT column_name
FROM information_schema.columns
WHERE table_schema = 'database_name'
AND table_name='Table_name';
-- declare NOT FOUND handler
DECLARE CONTINUE HANDLER
FOR NOT FOUND SET v_finished = 1;
OPEN column_cursor;
get_column: LOOP
FETCH column_cursor INTO v_column;
IF v_finished = 1 THEN
LEAVE get_column;
END IF;
-- build column name list
SET column_list = CONCAT(v_column,",",column_list);
END LOOP get_column;
CLOSE column_cursor;
END$$
DELIMITER ;
SET @column_list = "";
CALL build_column_names_str(@column_list);
SELECT @column_list;
Dank
ich die Abfrage über die information_schema Tabelle ausgeführt wird. Es scheint der Fehler zu sein. Vielen Dank –