使用连接创建存储过程?

Posted

技术标签:

【中文标题】使用连接创建存储过程?【英文标题】:creating a stored procedure with join? 【发布时间】:2021-05-19 01:08:46 【问题描述】:

在创建存储过程并尝试获取连接和组的输出时,我是否需要在另一个查询中编写代码?当我运行代码时,它说该过程已经存在。所以我不确定如何在创建过程时获得正确的输入。

问题:创建一个名为 MentoredStudents 的存储过程,它将显示学生的名字和姓氏。只有正在接受指导的学生才能被选中。按学生姓氏对输出进行排序,然后是名字。

表student包含:firstname、lastname、studentno

Student_Professor 表包含导师列('1' 被指导 0 不被指导),studentno

我的查询

    DELIMITER //
CREATE PROCEDURE MentoredStudents()
BEGIN
SELECT firstname, lastname 
FROM lab10.student s;
END //
DELIMITER ;
SELECT firstname, lastname
FROM lab10.student s
JOIN lab10.student_professor sp
ON s.studentno = sp.studentno
AND sp.mentor = 1
GROUP BY s.lastname, s.firstname;

【问题讨论】:

把“END”关键字移到最后。 【参考方案1】:

您的代码有点混乱,因为您从创建存储过程开始,但在创建一个开始良好但结束很糟糕的 SELECT 之前关闭了它。

你想要的是

delimiter //
create procedure mentoredStudents()
Begin
SELECT S.firstname, S.lastname from lab10.student S 
    join lab10.student_professor SP 
    on (S.studentno = SP.studentno) 
    where SP.mentored = 1
    order by S.lastname, S.firstname;
END //
Delimiter ;

call mentoredStudents();

【讨论】:

问题是它说创建的过程已经存在并且不会输出任何东西。在这种情况下我会创建一个新查询吗? @Steve 用DROP PROCEDURE...删除现有程序

以上是关于使用连接创建存储过程?的主要内容,如果未能解决你的问题,请参考以下文章

db2如何创建存储过程

水晶报表可以连接oracle的存储过程吗

SQL 存储过程 连接表

oracle执行存储过程时报:ORA-12170:TNS:连接超时

Oracle中存储过程的使用

Mysql--存储过程