Saya ingin PILIH satu nilai menjadi variabel. Saya akan mencoba untuk mengikuti:
DECLARE myvar INT(4);
- segera mengembalikan beberapa kesalahan sintaks.
SELECT myvalue
FROM mytable
WHERE anothervalue = 1;
- mengembalikan satu bilangan bulat
SELECT myvalue
INTO myvar
FROM mytable
WHERE anothervalue = 1;
- tidak bekerja, juga mencoba @myvar
Apakah mungkin untuk menggunakan DECLARE di luar prosedur atau fungsi yang tersimpan?
Mungkin saya tidak mengerti konsep variabel pengguna ... Saya baru saja mencoba:
SELECT myvalue INTO @var FROM `mytable` WHERE uid = 1;
SELECT @var;
... yang bekerja seperti yang seharusnya. Tetapi jika saya menjalankan setiap kueri pada satu waktu, saya hanya mendapatkan @ var NULL.
sumber
:=
akan digunakan lagi. Jadi lebih suka menggunakanSELECT ... INTO
!Pada akhirnya prosedur tersimpan adalah solusi untuk masalah saya. Inilah yang membantu:
sumber
Jawaban ini tidak mencakup variabel GANDA dengan baik.
Melakukan tugas sebaris dalam prosedur tersimpan menyebabkan hasil tersebut JUGA dikirim kembali ke kumpulan hasil. Itu bisa membingungkan. Untuk menggunakan sintaks SELECT ... INTO dengan beberapa variabel yang Anda lakukan:
SELECT harus mengembalikan hanya 1 baris, karenanya LIMIT 1, meskipun itu tidak selalu diperlukan.
sumber
Anda juga dapat menggunakan SET daripada MENYATAKAN
sumber
Sesuai dengan dokumen MySQL, MENYATAKAN hanya berfungsi di awal blok BEGIN ... END seperti dalam program yang disimpan.
sumber
syntax error, missing ;
kesalahan bagi saya.Anda tidak perlu MENYATAKAN variabel di MySQL. Jenis variabel ditentukan secara otomatis saat pertama kali diberi nilai. Jenisnya dapat berupa salah satu dari: integer, desimal, floating-point, string biner atau nonbinary, atau nilai NULL. Lihat dokumentasi Variabel Buatan Pengguna untuk informasi lebih lanjut:
http://dev.mysql.com/doc/refman/5.0/en/user-variables.html
Anda dapat menggunakan SELECT ... INTO untuk menetapkan kolom ke variabel:
http://dev.mysql.com/doc/refman/5.0/en/select-into-statement.html
Contoh:
sumber
Perlu dicatat bahwa terlepas dari kenyataan bahwa Anda dapat menggunakan
SELECT INTO
variabel global seperti:SELECT ... INTO @XYZ ...
Anda TIDAK dapat menggunakan
FETCH INTO
variabel global seperti:FETCH ... INTO @XYZ
Sepertinya itu bukan bug . Saya harap ini akan membantu seseorang ...
sumber
Saya menggunakan versi 6 (MySQL Workbench Community (GPL) untuk Windows versi 6.0.9 revisi 11421 build 1170) di Windows Vista. Saya tidak punya masalah dengan opsi berikut. Mungkin mereka memperbaikinya karena orang-orang ini mendapat masalah tiga tahun lalu.
Semua opsi di atas memberi saya hasil yang benar.
sumber
Bagi mereka yang menjalankan masalah seperti itu sekarang, coba saja untuk membuat alias untuk tabel, ini triknya, misalnya:
Itu berhasil untuk saya.
Bersulang.
sumber
Anda mungkin melewatkan simbol @ sebelum nilai Anda, seperti itu
select 'test' INTO @myValue
;sumber
SELECT c1, c2, c3, ... INTO @ v1, @ v2, @ v3, ... FROM table_name WHERE condition;
sumber