Hazırlanan bir ifadeden sonucu değişkene ayarlamak mümkün mü? Aşağıdaki saklı yordamını oluşturmaya çalışıyorum ama başarısız oluyor:Hazırlanan ifadeden skaler sonuç nasıl elde edilir?
HATA 1064 (42000) satır 31'de: SQL sözdiziminizde bir hata var; 'stmt USING @m, @c, @a yakınında kullanmak için doğru sözdizimi için MySQL sunucu sürümünüze karşılık gelen kılavuzu kontrol edin;
DROP PROCEDURE IF EXISTS deleteAction;
DELIMITER $$
CREATE PROCEDURE deleteAction(
IN modul CHAR(64),
IN controller CHAR(64),
IN actn CHAR(64))
MODIFIES SQL DATA
BEGIN
PREPARE stmt FROM 'SELECT id
FROM actions
WHERE `module` = ?
AND `controller` = ?
AND `action` = ?';
SET @m = modul;
SET @c = controller;
SET @a = actn;
SET @i = EXECUTE stmt USING @m, @c, @a;
DEALLOCATE PREPARE stmt;
DELETE FROM acl WHERE action_id = @i;
DELETE FROM actions WHERE id = @i;
END
$$
DELIMITER ;
Ah çok daha kolay görünüyor! Tabii ki!! –
Bu cevabın çok eski olduğunu biliyorum ama herkes bana söyleyebilir: Bu kodu kullandığımda ve CALL myProc (600) kullandığımda boş bir sorgu sonucunu döndürmez, bunun yerine son 'geçerli' çağrı olan her şeyi döndürür. Neden böyle ve bunu nasıl değiştirebilirim? Tabloda bulunmayan bir değeri geçtiğimde 'sonuç' boş olarak dönmelidir. – Meelah