当我在控制台中测试此脚本时,它正在运行。
我的剧本:
show fields from testdata1970_05.loadlv_test where FIELD not like 'ID_test';
我的存储过程:
DELIMITER $$
DROP PROCEDURE IF EXISTS `testdata1970_05`.`list_testparameters` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `list_testparameters`(IN nametest varchar(24))
BEGIN
show fields from nametest where FIELD not like 'ID_test';
END $$
DELIMITER ;
但是,当我基于此脚本构建存储过程时,它不起作用。
执行存储过程:
call list_testparameters(loadlv_test);
错误:
ERROR 1054 (42S22): Unknown column 'loadlv_test' in 'field list'
请告知为什么这个acript在控制台中可以正常工作?
答案 0 :(得分:1)
假设testdata1970_05
是一个数据库,您需要动态生成SQL并执行它。
DELIMITER $$
DROP PROCEDURE IF EXISTS `testdata1970_05`.`list_testparameters` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `list_testparameters`(IN nametest varchar(24))
BEGIN
SET @sql_text := CONCAT('show fields from ','`testdata1970_05`.`',@nametest,'` where FIELD not like ''ID_test''';
PREPARE sqlstmt FROM @sql_text;
EXECUTE sqlstmt;
END $$
DELIMITER ;