[英]SQL stored procedure, variable is null
這是我的存儲過程:
CREATE PROCEDURE `insert_exercise` (nazev VARCHAR(45), URL VARCHAR(255), obtiznost INT, partie INT)
BEGIN
DECLARE video_id INT;
DECLARE cvik_id INT;
INSERT INTO `odkaz_video` (URL) VALUES (@URL);
SELECT id INTO video_id FROM `odkaz_video` WHERE URL = @URL;
INSERT INTO `cvik` (nazev, odkaz_video, obtiznost_id) VALUES (@nazev, video_id, @obtiznost);
SELECT id INTO cvik_id FROM `cvik` WHERE nazev = @nazev;
INSERT INTO `cvik_partie` (partie_id, cvik_id) VALUES (@partie, cvik_id);
END
當我調用此SP時,出現錯誤1048,列“ URL”不能為空。 為什么即使我輸入了所有參數,該變量(@URL)還是為null?
感謝您的回應
使用過程參數中給出的名稱:
創建過程insert_exercise
( nazev VARCHAR(45), URL VARCHAR(255), obtiznost INT, partie INT)
它們沒有以@開頭的前綴。
查看本教程: MySQL存儲過程參數
@URL
為NULL,因為您從未設置其值。 輸入參數名為URL
,而不是@URL
。
此外,我建議您在參數名稱前添加p_
,在局部變量名稱前添加v_
以將其與列名稱區分開。
例如:
CREATE PROCEDURE `insert_exercise` (p_nazev VARCHAR(45), p_URL VARCHAR(255), p_obtiznost INT, p_partie INT)
BEGIN
DECLARE v_video_id INT;
DECLARE v_cvik_id INT;
INSERT INTO `odkaz_video` (URL) VALUES (p_URL);
SELECT id INTO v_video_id FROM `odkaz_video` WHERE URL = p_URL;
INSERT INTO `cvik` (nazev, odkaz_video, obtiznost_id) VALUES (p_nazev, v_video_id, p_obtiznost);
SELECT id INTO v_cvik_id FROM `cvik` WHERE nazev = p_nazev;
INSERT INTO `cvik_partie` (partie_id, cvik_id) VALUES (p_partie, v_cvik_id);
END
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.