簡體   English   中英

SQL存儲過程,變量為null

[英]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_exercisenazev 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM