在过程MySql中创建临时表

时间:2015-12-14 01:22:14

标签: mysql sql

我需要创建一个简单的过程,但是在创建一个临时表之后,mysql希望把它放到最后。分号后。

 CREATE procedure zad2()

    begin
    drop temporary table if exists temp;
    create temporary table temp as (select table_name, column_name 
      from information_schema.columns  where table_schema = 'lista3' and table_name not like 'lista');

    declare i int default 0;
    end$$

2 个答案:

答案 0 :(得分:0)

SQL存储过程有一个块,您将放置所有代码/逻辑..并且该块为BEGINEND,如果您有一个开放块BEGIN,则需要用END关闭它,这就是MySql希望你在半冒号后放置END的原因。

以下链接有助于语法:

CREATE PROCEDURE and CREATE FUNCTION Syntax

答案 1 :(得分:0)

我认为缺少的是在声明开头声明DELIMITER $$:

DELIMITER $$ /*To tell MySQL that your delimiter is now '$$'    */
CREATE procedure zad2()

        begin
        drop temporary table if exists temp;
        create temporary table temp as (select table_name, column_name 
          from information_schema.columns  where table_schema = 'lista3' and table_name not like 'lista');

        declare i int default 0;
        end$$
DELIMITER ; /*To tell your MySQL that you delimiter is back ';'     */