SQL Server家伙在这里,但我正在尝试编写一个mySQL存储过程,它获取一个临时表(来自SQL转储(并将其合并到现有数据库中。
我遇到的问题是,虽然光标确实填充了第一个变量col_name
,但它不会填充其他两个变量——data_type
和is_nullable
。
为了说明这个问题,我已经将过程中的核心游标部分分离出来。
根据我在网上找到的文档和其他帖子,这应该是可行的。
mySQL专家对这里可能发生的事情有什么想法吗?
DELIMITER $$;
CREATE PROCEDURE sp_Test()
BEGIN
DECLARE finished INTEGER DEFAULT 0;
DECLARE col_name VARCHAR(64) DEFAULT "";
DECLARE data_type VARCHAR(64) DEFAULT "";
DECLARE is_nullable VARCHAR(3) DEFAULT "";
DECLARE column_cursor CURSOR FOR
SELECT `COLUMN_NAME`, `DATA_TYPE`, `IS_NULLABLE` FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME ='country';
DECLARE CONTINUE HANDLER
FOR NOT FOUND SET finished = 1;
OPEN column_cursor;
build_query: LOOP
FETCH column_cursor INTO col_name, data_type, is_nullable;
IF finished = 1 THEN
LEAVE build_query;
END IF;
SELECT col_name, data_type, is_nullable;
END LOOP build_query;
CLOSE column_cursor;
END$$;
DELIMITER;
好的,想好了。这是因为变量名与列名相同。当我将变量名更改为dta_type
和is_null
时,它就起作用了。