Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Nie jestem w stanie zrozumieć, co złego popełniłem, tworząc to zapytanie MYSQL

  • Musisz ustawić separator na wszystko z wyjątkiem ;
  • Opcjonalnie sprawdź, czy procedura składowana o tej samej nazwie już istnieje.
  • Na koniec zmień definicję separatora z powrotem na ;
  • O ile nie zamierzasz używać zmiennej x poza tą procedurą składowaną; naprawdę nie musisz używać @; sprawia, że ​​zmienna jest dostępna wszędzie w tej konkretnej sesji).

Spróbuj (więcej wyjaśnień w komentarzach):

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. Prześlij wiele obrazów do bazy danych Mysql

  2. Indeksowanie pełnotekstowe w MyISAM, indeksowanie pojedynczej kolumny a indeksowanie wielu kolumn

  3. utwórz bazę danych za pomocą pdo w php

  4. mysql ZADEKLARUJ PODCZAS poza procedurą składowaną w jaki sposób?

  5. Django views.py Wersja SQL Join z Multi Table Query