Mysql 将可选参数添加到存储过程中,如果我没有传递该参数,则必须获取所有详细信息
我想在存储过程中添加一个可选的param,如果我使用可选的param调用该存储过程,则应获取相关的输出,如果在调用中未传递param值,则应获取所有值 我已经试过了,学生的分数应该是可选的,如果我在param中通过了90分,那么所有科目都有90分的学生应该被录取。。如果我只通过学生姓名,那么所有科目都有分数的学生将被录取Mysql 将可选参数添加到存储过程中,如果我没有传递该参数,则必须获取所有详细信息,mysql,stored-procedures,Mysql,Stored Procedures,我想在存储过程中添加一个可选的param,如果我使用可选的param调用该存储过程,则应获取相关的输出,如果在调用中未传递param值,则应获取所有值 我已经试过了,学生的分数应该是可选的,如果我在param中通过了90分,那么所有科目都有90分的学生应该被录取。。如果我只通过学生姓名,那么所有科目都有分数的学生将被录取 DELIMITER $$ DROP PROCEDURE IF EXISTS students_details $$ CREATE PROCEDURE students_deta
DELIMITER $$
DROP PROCEDURE IF EXISTS students_details $$
CREATE PROCEDURE students_details(IN name INT(11), IN marks CHAR(20))
BEGIN
SELECT
student_name,
student_id,
subject_name,
student_marks
FROM students
where student_name = name (declared in param)
and student_marks = marks (optional param);
END $$
DELIMITER ;
所需输出:如果我运行call students_details('john',80),则必须获取john的详细信息(john在科目中有80分)
如果我运行call students_details('john')only john作为第一个参数,那么输出应该是john的带有标记的所有主题。输入应该包括所有参数(必需)。因此,对于可选选项,您可以使用(“”),如
呼叫学生\u详细信息('john',“”)
您有什么特别的问题吗?我不熟悉存储过程的概念。。如果我没有传递第二个参数,那么应该获取所有详细信息..我如何处理..您需要在call语句中传递这两个参数,否则错误1318(42000):过程sandbox.p的参数数量不正确;期望2,得到1,这样你就可以通过一些你可以测试的东西。
DELIMITER $$
DROP PROCEDURE IF EXISTS students_details $$
CREATE PROCEDURE students_details(IN name INT(11), IN marks CHAR(20))
BEGIN
IF(marks='') THEN
SELECT
student_name,
student_id,
subject_name,
student_marks
FROM students
WHERE student_name = name;
ELSE
SELECT
student_name,
student_id,
subject_name,
student_marks
FROM students
WHERE student_name = name
AND student_marks = marks;
END IF;
END $$
DELIMITER ;