[英]How to create dynamic where conditions according to the parameter in stored procedure in mysql?
[英]how to create a stored procedure containing request where not exists in mysql database
請求“哪里不存在”錯誤是我的問題:
您的SQL語法有誤; 檢查與您的MySQL服務器版本相對應的手冊以獲取正確的語法,以在第11行“ WHERE NOT EXISTS(SELECT 1 FROM users(WHERE Matricule = @Matricule AND mot_d'')附近使用
這是我的程序
create procedure usp_testInsert(
Matricule int,
mot_de_passe varchar(10),
Nom varchar(10) ,
Prenom varchar(10)
) begin
INSERT INTO users (
Matricule,
mot_de_passe,
Nom,
Prenom)
SELECT
@Matricule,
@mot_de_passe,
@Nom,
@Prenom
WHERE
NOT EXISTS (
SELECT 1
FROM users (
WHERE
Matricule = @Matricule AND
mot_de_passe = @mot_de_passe AND
Nom = @Nom AND Prenom = @Prenom
)
);
end
您的存儲過程中的一些問題:
指出9.4之間的區別很重要。 用戶定義的變量和例程參數13.1.15。 CREATE PROCEDURE和CREATE FUNCTION語法是不同的變量。
避免將參數或變量命名為表的列。
句法:
DELIMITER //
create procedure usp_testInsert (
Matricule int,
mot_de_passe varchar(10),
Nom varchar(10) ,
Prenom varchar(10)
)
begin
INSERT INTO users (Matricule, mot_de_passe, Nom, Prenom)
SELECT @Matricule, @mot_de_passe, @Nom, @Prenom
-- FROM ???
WHERE NOT EXISTS (
SELECT 1
/*
FROM users (
WHERE Matricule = @Matricule AND
*/
FROM users
WHERE (
Matricule = @Matricule AND
mot_de_passe = @mot_de_passe AND
Nom = @Nom AND
Prenom = @Prenom
)
);
end//
DELIMITER ;
更新
我的版本肯定不會起作用,但是可以幫助您解決問題。
DELIMITER //
DROP PROCEDURE IF EXISTS `usp_testInsert`//
CREATE PROCEDURE `usp_testInsert` (
`_Matricule` INT,
`_mot_de_passe` VARCHAR(10),
`_Nom` VARCHAR(10) ,
`_Prenom` VARCHAR(10)
)
BEGIN
INSERT INTO `users` (`Matricule`, `mot_de_passe`, `Nom`, `Prenom`)
SELECT `_Matricule`, `_mot_de_passe`, `_Nom`, `_Prenom`
FROM DUAL
WHERE NOT EXISTS (
SELECT 1
FROM `users`
WHERE (
`Matricule` = `_Matricule` AND
`mot_de_passe` = `_mot_de_passe` AND
`Nom` = `_Nom` AND
`Prenom` = `_Prenom`
)
);
END//
DELIMITER ;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.