Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Mendapatkan dua masalah saat menggunakan prosedur tersimpan di MySQL

Itulah batasannya.

Sekarang, solusinya:tambahkan BEGIN ... END blokir.

DELIMITER $$
CREATE PROCEDURE ...
BEGIN
  DECLARE ... INT ... -- variable
  CREATE TEMPORARY TABLE... -- following the declarations, no more declarations allowed, unless...
  BEGIN -- resets the scope, changes the rules, allows more declarations
    DECLARE ... INT ... -- variables
    DECLARE ... CURSOR ...
    DECLARE CONTINUE HANDLER ...
    OPEN ...
    ...
  END;
END $$

Semua variabel di blok luar masih dalam cakupan di blok dalam, kecuali variabel lain di blok dalam memiliki nama yang bertentangan.

HANDLER di blok luar juga dalam cakupan untuk sinyal di blok dalam, kecuali penangan yang berkonflik dideklarasikan di sana, dalam hal ini penangan dalam akan menangkap pengecualian dan pegangan luar akan menangkap apa pun yang dilemparkan oleh penangan dalam, termasuk RESIGNAL .

Beberapa tingkat bersarang diperbolehkan. Ukuran thread_stack mungkin menjadi faktor, tetapi dokumentasinya tidak jelas. Saya telah menjalankan tumpukan utas 262.144 byte sejak sebelum dijadikan default, dan tidak pernah menemukan batasan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kelompokkan menurut id yang memiliki max(date_field)

  2. PHP MySQL memasukkan data ke beberapa tabel

  3. Menghindari injeksi SQL menggunakan mysql_real_escape_string dan stripslash

  4. Bagaimana saya harus menangani --secure-file-priv di MySQL?

  5. Tidak dapat menambahkan batasan kunci asing pada bidang tanggal