Mysql
 sql >> база данни >  >> RDS >> Mysql

Не мога да разбера каква грешка направих, като направих тази MYSQL заявка

  • Трябва да зададете разделителя на всичко, освен ;
  • По избор поставете отметка дали вече съществува съхранена процедура със същото име.
  • Накрая предефинирайте разделителя обратно до ;
  • Освен ако не ще използвате променлива x извън тази съхранена процедура; наистина не е нужно да използвате @; прави променливата достъпна навсякъде в тази конкретна сесия).

Опитайте (повече обяснение в коментарите):

CREATE TABLE t1 (s1 INT, PRIMARY KEY (s1)); -- create the table

DELIMITER $$ -- redefine the delimiter to $$ (for eg)

DROP PROCEDURE IF EXISTS `handlerdemo` $$ -- drop previous if exists

CREATE PROCEDURE handlerdemo ()
  BEGIN

    DECLARE x INT DEFAULT 0; -- datatype is INT 
    -- also a good practice to set default value

    SET x = 1; -- no need to use in Session context
    INSERT INTO t1 VALUES (x); -- use variable name here instead of literal value

    SET x = 2; 
    INSERT INTO t1 VALUES (x); 

  END $$ -- remember that delimiter is $$ right now

-- redefine the Delimiter back to ;
DELIMITER ;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql SET NAMES UTF8 - как да се отървете от?

  2. База данни с рецепти, търсене по съставка

  3. Метод за намиране на пропуски в данните от времеви серии в MySQL?

  4. Как да използвам MAX в MySQL?

  5. Твърде много връзки, използващи Hibernate и mysql