2013-02-12 4 views
0
DECLARE FoundCount INT; 
    DECLARE db_Name VARCHAR(255); 

SET @Project_List_val = CONCAT(Project_Number_val, '_List'); 
SET @db_Name='test_rs'; 

    SET @sql1 = CONCAT('SELECT COUNT(1) INTO', @FoundCount ,' 
    FROM information_schema.tables 
    WHERE table_schema =',@db_Name,' 
    AND table_name =', @Project_List_val); 

PREPARE stmt FROM @sql1; 
EXECUTE stmt; 
DEALLOCATE PREPARE stmt; 

    IF FoundCount = 1 THEN 
SET @sql = CONCAT(' INSERT INTO test (Panel_Id) 
        SELECT Panel_Id 
        FROM ', @Project_List_val); 

PREPARE stmt FROM @sql; 
EXECUTE stmt; 
DEALLOCATE PREPARE stmt; 
END IF; 

Эта Хранимая процедура выполнена отлично. Но при попытке запустить его он отображается ниже ошибки.mysql таблица есть логика внутри хранимой процедуры

1064 - У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии сервера MySQL, для правильного синтаксиса для использования рядом с «NULL» по строке 1

Мне нужно запустить второй запрос, если указанная таблица (@Project_List_val) существует.

ответ

0

проверка состояния, как это @ FoundCount = 1, как это

Попробуйте

- DECLARE FoundCount INT;

DECLARE db_Name VARCHAR(255); 

SET @Project_List_val = CONCAT(Project_Number_val, '_List'); 
SET @db_Name='test_rs'; 

    SET @sql1 = CONCAT('SELECT COUNT(1) INTO ', @FoundCount ,' 
    FROM information_schema.tables 
    WHERE table_schema = ',@db_Name,' 
    AND table_name =', @Project_List_val); 

PREPARE stmt FROM @sql1; 
EXECUTE stmt; 
DEALLOCATE PREPARE stmt; 

    IF @FoundCount = 1 THEN 
SET @sql = CONCAT(' INSERT INTO test (Panel_Id) 
        SELECT Panel_Id 
        FROM ', @Project_List_val); 

PREPARE stmt FROM @sql; 
EXECUTE stmt; 
DEALLOCATE PREPARE stmt; 
END IF; 

использовать так:

SET @sql1 = CONCAT('SELECT COUNT(1) INTO ', @FoundCount ,' 
    FROM information_schema.tables 
    WHERE table_schema = ',@db_Name,' 
    AND table_name =', @Project_List_val); 

я есть дать место после в .copy это и тел мне

+0

Нет разницы. Такая же ошибка? – user1597811

+0

Любые предложения? – user1597811

+0

такой же ошибка. Я использовал вышеупомянутый модифицированный код – user1597811

0

Да решена. Одиночные кавычки отсутствуют для этих переменных внутри оператора для @db_Name и @Project_List_Val

Смежные вопросы