1

当我在控制台中测试这个脚本时,它正在工作。

我的脚本:

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 可以在控制台中工作时它不工作?

4

1 回答 1

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 ;
于 2013-05-02T09:00:44.320 回答