sql 调用已经建立的存储过程

共有三张表学生表(学号,姓名,性别,班级,入学成绩,入学日期,家庭住址,年龄
,简历) 选课成绩表( 选课ID,学号,课程编号,成绩) 课程表( 课程编号,课程名称,学分,授课教师)
1.建立存储过程pro_tc,查询某一名教师所上的课程的名称,用变量返回查询结果(即课程名称),该存储过程包含一个输入参数。
create proc proc_avg
(@name char(10),
@avg float output)
as
select @avg=avg(成绩)
from 选课成绩表,学生表
where 姓名=@name and 选课成绩表.学号=学生表.学号

2.调用存储过程proc_avg,查询“李进”所上的课程名称
???、怎么写

实现的方法和详细的操作步骤如下:

1、第一步,创建一个存储过程,该代码如图所示。存储过程的主要目的是为表“JingYan”插入新数据,如下图所示,然后进入下一步。

2、其次,完成上述步骤后,执行以下几行代码,并查看执行是否成功。现在,数据库中有一个存储过程源“sp_JY”,如下图所示,然后进入下一步。

3、接着,完成上述步骤后,查看“JingYan”表中的当前数组,只有三行数据,如下图所示,然后进入下一步。

4、然后,完成上述步骤后,在mysql中,要调用存储过程,只需使用“call”关键字并输入存储过程的名称即可。当然,如果有参数,则需要带一个参数。代码见下图,然后进入下一步。

5、随后,完成上述步骤后,再次查看“JingYan”表中的数据,可以看到当前数据已经是四个,这表明对存储过程的调用已成功插入了新数据,如下图所示,然后进入下一步。

6、接着,完成上述步骤后,添加另一个存储过程,该存储过程使用select语句返回表数据,如下图所示,然后进入下一步。

7、最后,完成上述步骤后,调用新的存储过程,可以看到结果中已经返回了表数据,如下图所示。这样,问题就解决了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-27
关于DelPhi调用存储过程,用SQL server自带的“创建存储过程向导”给表login建立一个更新存储过程。 悬赏分:100 | 离问题结束还有 12 天 18 小时 | 提问追问

复制黏贴的真...........................

第2个回答  推荐于2017-11-24
1)建立存储过程pro_tc,查询某一名教师所上的课程的名称,用变量返回查询结果(即课程名称),该存储过程包含一个输入参数。

create proc pro_tc(@tname varchar(10),@g varchar(1000) output)
as
begin
set @g=''
select distinct @g=@g+课程名称+',' from 课程表 where 授课教师=@tname
set @g=stuff(@g,len(@g)-1,1,'')
end

2)调用存储过程proc_avg,查询“李进”所上的课程名称???、怎么写

declare @savg float
exec proc_avg @name='李进',@avg=@savg output
select @savg
你写的存储过程是调取某学生的平均成绩,不能查询所上的课程名称追问

第二题不是调用存储过程proc_avg么 那是什么意思? 难道再重新写一个存储过程?

追答

是不是要你重新再写个存储过程?

dorp proc proc_avg
--删除已建立的存储过程proc_avg
create proc proc_avg(@name varchar(10))
as
select 课程表.课程 from 学生表,成绩表,课程表 where 学生表.学号=成绩表.学号 and 成绩表.课程编号=课程表.课程编号 and 学生表.姓名=@name
--重新建立个新的查询某学生的所有课程的存储过程
--执行:
exec proc_avg @name='李进'

追问

今天问老师了
use jxgl
go

create proc proc_kc
(@name char(8),
@kcmc char(20) output)
with encryption
as
select 课程名称
from 学生表 a ,选课成绩表 b,课程表 c
where a.学号=b.学号 and b.课程编号=c.课程编号 and 姓名=@name

declare @课程名称 char(20)
exec proc_kc '王海',@课程名称 output
print @课程名称

你的意思是对的,但是返回值应该是课程名称, 不过还是谢谢你 !

追答

不用谢,记得采纳答案啊

本回答被提问者采纳