Nasıl varsayılan parametreleri Mysql SPs mümkün olmadığı gerçeği ile anlaşma yapmak?

3 Cevap php

Herhangi bir düşünce? Ben soruyu "Is it possible to have a default parameter for a mysql stored procedure?", bugün ve cevabı çok güçlü olduğunu sordu, "hayır, bu mümkün değil."

Yani benim bir sonraki soru, o zaman bir php / mysql geliştiricisi olarak bu sorunun üstesinden nasıl olduğunu? Boş ve SP değişkeni ayarlar bir IF bloğu var size iletirim onun boş olur? Eğer PHP varsayılan bir değer geçmek?

Teşekkürler.

3 Cevap

Burada bir çözüm saklı proc yerel bir değişkenin değerini ayarlamak için COALESCE() kullanarak bulunuyor:

DELIMITER !!

CREATE PROCEDURE dflt (IN param1 INT)
BEGIN
 DECLARE param1_dflt INT DEFAULT 456
 SET param1_dflt = COALESCE(param1, param1_dflt);

 SELECT param1_dflt;
END!!

DELIMITER ;

CALL dflt(123);
+-------------+
| param1_dflt |
+-------------+
|         123 | 
+-------------+


CALL dflt(NULL);
+-------------+
| param1_dflt |
+-------------+
|         456 | 
+-------------+

İsteğe bağlı parametreler MySQL 6 planlanıyor.

Sizin en kolay seçenek varsayılan değerleri ekler sarıcı yazmak, ya da her durum için prosedürleri oluşturmak ya da budur.

Ben saklı yordamları kullanarak için nedenlerinizi düşünün. Soyutlama uygulama katmanında yapılabilir ve ağ trafiğinin azaltılması genellikle kaygıları az olduğu gibi onlar, az yararı olan vakaların büyük çoğunluğunda. Tabii ki, bu uygulama bağlıdır.

Bu veritabanı, değil çağıran komut dosyası tarafından ele alınmalıdır. Varsayılan parametreleri tanımlayabilirsiniz yapamıyorsanız o NULL değerleri geçirmek ve saklı yordam varsaymak yapalım.