Aku´d seperti untuk MEMILIH satu nilai ke sebuah variabel. Aku´d mencoba berikut:
DECLARE myvar INT(4);
-- segera kembali beberapa kesalahan sintaks.
SELECT myvalue
FROM mytable
WHERE anothervalue = 1;
-- kembali satu bilangan bulat
SELECT myvalue
INTO myvar
FROM mytable
WHERE anothervalue = 1;
-- tidak bekerja, juga mencoba @myvar
Adalah mungkin untuk menggunakan MENDEKLARASIKAN luar disimpan prosedur atau fungsi?
Mungkin aku hanya tidak mendapatkan konsep dari variabel pengguna... aku hanya mencoba:
SELECT myvalue INTO @var FROM `mytable` WHERE uid = 1;
SELECT @var;
...yang bekerja seperti ini´s seharusnya. Tapi jika saya menjalankan kueri masing-masing pada suatu waktu saya hanya mendapatkan @var NULL.
Aku berlari ke dalam masalah yang sama, tapi saya pikir saya tahu apa yang's menyebabkan kebingungan. Jika anda menggunakan MySql Query Analyzer, anda bisa melakukan hal ini dengan baik:
SELECT myvalue
INTO @myvar
FROM mytable
WHERE anothervalue = 1;
Namun, jika anda menempatkan yang sama query di MySql Workbench, ia akan melempar kesalahan sintaks. Saya don't tahu mengapa mereka akan berbeda, tapi mereka. Untuk mengatasi masalah di MySql Workbench, anda dapat menulis ulang query seperti ini:
SELECT @myvar:=myvalue
FROM mytable
WHERE anothervalue = 1;
Di akhir prosedur yang disimpan adalah solusi untuk masalah saya. Berikut ini´s apa yang membantu:
DELIMITER //
CREATE PROCEDURE test ()
BEGIN
DECLARE myvar DOUBLE;
SELECT somevalue INTO myvar FROM mytable WHERE uid=1;
SELECT myvar;
END
//
DELIMITER ;
call test ();
Ini jawaban don't penutup yang sangat baik BEBERAPA variabel.
Melakukan inline tugas dalam prosedur yang disimpan menyebabkan hasil tersebut JUGA akan dikirim kembali dalam resultset. Yang dapat membingungkan. Untuk menggunakan SELECT...KE sintaks dengan beberapa variabel yang anda lakukan:
SELECT a, b INTO @a, @b FROM mytable LIMIT 1;
PILIH harus kembali hanya 1 baris, maka BATAS 1, meskipun itu isn't selalu diperlukan.
Anda don't perlu MENDEKLARASIKAN variabel di MySQL. Variabel's type ditentukan secara otomatis ketika pertama kali diberi nilai. Jenisnya dapat berupa salah satu dari: integer, desimal, floating-point, biner atau nonbinary string, atau nilai NULL. Melihat Variabel yang Ditetapkan Pengguna dokumentasi untuk informasi lebih lanjut:
http://dev.mysql.com/doc/refman/5.0/en/user-variables.html
Anda dapat menggunakan SELECT ... untuk menetapkan kolom untuk variabel:
http://dev.mysql.com/doc/refman/5.0/en/select-into-statement.html
Contoh:
mysql> SELECT 1 INTO @var;
Query OK, 1 row affected (0.00 sec)
mysql> SELECT @var;
+------+
| @var |
+------+
| 1 |
+------+
1 row in set (0.00 sec)
Perlu dicatat bahwa meskipun fakta bahwa anda dapat PILIH MENJADI
global variabel seperti:
PILIH ... KE @XYZ ...
Anda dapat TIDAK gunakan AMBIL MENJADI
global variabel seperti:
AMBIL ... KE @XYZ
Terlihat seperti itu's tidak bug. Saya berharap ini akan membantu seseorang...
Saya menggunakan versi 6 (MySQL Workbench Masyarakat (GPL) untuk versi Windows 6.0.9 revisi 11421 membangun 1170) pada Windows Vista. Saya tidak punya masalah dengan pilihan berikut. Mungkin mereka tetap hal itu karena orang-orang ini punya masalah tiga tahun yang lalu.
/* first option */
SELECT ID
INTO @myvar
FROM party
WHERE Type = 'individual';
-- get the result
select @myvar;
/* second option */
SELECT @myvar:=ID
FROM party
WHERE Type = 'individual';
/* third option. The same as SQL Server does */
SELECT @myvar = ID FROM party WHERE Type = 'individual';
Semua pilihan di atas memberi saya hasil yang benar.
Untuk orang-orang yang berjalan dalam isu-isu seperti sekarang, hanya mencoba untuk menempatkan sebuah alias untuk tabel, ini harus trick, e.g:
SELECT myvalue
INTO myvar
FROM mytable x
WHERE x.anothervalue = 1;
Ini bekerja untuk saya.
Sorak-sorai.