gpt4 book ai didi

mysql - PREPARE Stmt 在存储过程中给出语法错误

转载 作者:行者123 更新时间:2023-11-29 20:29:48 27 4
gpt4 key购买 nike

我不明白我做错了什么。

我在 SQL Server 中有一个存储过程,我需要迁移到 MySQL。

当我运行与打印相同的查询时,该查询正在工作,但相同的变量无法生成准备语句,从而导致语法错误。

Error Code: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'if exists (select * from INFORMATION_SCHEMA.TABLES where table_name='bkup2_t_amt' at line 1

DELIMITER //
DROP PROCEDURE IF EXISTS pull_amts_from_PS;

CREATE Procedure pull_amts_from_PS ( p_PSEnv VARCHAR(50))
BEGIN
DECLARE v_cmd NVARCHAR (3500);
#-- -------------- backup previous amts records
DECLARE v_seq int;
DECLARE v_iterations int;

SET v_iterations = 10;

SELECT info_fieldval_int into @seq from t_lrdb_general_info WHERE info_fieldname = 'amts_backup_sequence_no' ;
select concat('SEQ #: ',@seq) ;

select concat(concat('bkup',@seq),'_t_amts_input') into @v_cmdTemp;
select concat('v_cmdTemp #: ',@v_cmdTemp) ;


set @seq=concat("select * from INFORMATION_SCHEMA.TABLES where table_name='",@v_cmdTemp,"' and table_type='BASE TABLE'");



select concat('SEQ 1 #: ',@seq) ;

set @v_cmdTemp1=concat( "if exists (", @seq ,") THEN DROP TABLE ", @v_cmdTemp ," ; END IF;");

select concat('v_cmdTemp1 1 #: ',@v_cmdTemp1) ;


PREPARE stmt FROM @v_cmdTemp1;
EXECUTE stmt ;
DEALLOCATE PREPARE stmt ;

END;
//
DELIMITER ;

输出:-

SEQ #: 2

v_cmdTemp #: bkup2_t_amts_input

SEQ 1 #: select * from INFORMATION_SCHEMA.TABLES where table_name='bkup2_t_amts_input' and table_type='BASE TABLE'

v_cmdTemp1 1 #: if exists (select * from INFORMATION_SCHEMA.TABLES where table_name='bkup2_t_amts_input' and table_type='BASE TABLE') THEN DROP TABLE bkup2_t_amts_input ; END IF;

v_cmdTemp1 的最后一个值,执行时工作正常,但使用变量执行时则不起作用。

最佳答案

ifexists是MySQL的一个修正,不是一个主命令,因此不能写:

if exists drop table a;

请使用以下形式:

drop table if exists a;

或者对于多个表:

drop tables if exists a, b, c;

您不需要从 I_S 获取任何内容来执行删除操作。您知道该表的名称,因此只需删除它即可。

关于mysql - PREPARE Stmt 在存储过程中给出语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39143441/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com