用SQL创建存储过程的题目(SQL SERVER2000下)

用SQL创建一个存储过程,当输入一个学生的姓名的时候,将从三个表中返回该学生的学号,选修的课程名称和课程成绩。student表下有sno(主键),sname,sage,s... 用SQL创建一个存储过程,当输入一个学生的姓名的时候,将从三个表中返回该学生的学号,选修的课程名称和课程成绩。

student表下有sno(主键),sname,sage,ssex,sdept
course表下有cno(主键),cname,ccredit,cpno
sc表下有sno,cno,grade(sno和cno与上面的关联)

完全不懂存储过程,请直接贴上SQL语句,最好有相应说明!
只有三楼的能正常运行

可是明明student表里面存在的条目 (比如王敏)
运行:
exec a '王敏'

下面得到的结果却是空的
展开
 我来答
简淑敏邢淑
2019-12-10 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.4万
采纳率:28%
帮助的人:675万
展开全部
关于delphi调用存储过程,用sql
server自带的“创建存储过程向导”给表login建立一个更新存储过程。
悬赏分:100
|
离问题结束还有
12

18
小时
|
提问者:风风我依
|
检举
存储过程代码如下:已知表login有passname和password两个字段。
create
procedure
[update_login_1]
(@passname_1
[varchar],
@passname_2
[varchar](50),
@password_3
[varchar](50))
as
update
[wqzx].[dbo].[login]
set
[passname]
=
@passname_2,
[password]
=
@password_3
where
(
[passname]
=
@passname_1)
go
-------------------------------------------------------------------------------------
在delp调用该存储过程,要求只该改字段中的password,即建一个文本框将里面内容替换一个记录中的password,而保持passname不变,简单讲就是修改一个用户名的密码。怎么写代码?问题补充:
"强唐华"我试过这样写存储过程了,没用的,如果可以,那在delphi中怎么写代码调用这个存储过程?
强调下:这是sql自带建立的存储过程,就是由“创建存储过程向导”生成,我觉得不会错的,问题是怎么在delphi中调用该存储过程,代码呢?
我建立了一个插入的存储过程,代码如下:
with
storedproc1
do
begin
parambyname('@passname_1').asstring:=edit1.text;
parambyname('@password_2').asstring:=edit2.text;
execproc;
if
params[0].asinteger=0
then
messagedlg('添加新用户名成功!',mtinformation,[mbok],0)
else
messagedlg('添加用户失败!',mterror,[mbok],0);
end;
这段代码是可以成功插入一个记录的。现在是想修改某个记录。
回答
共1条
create
procedure
[dbo].[update_login]
(@name
varchar(50),
@password
[varchar](50))
as
update
useres
set
password=@password
where
name=
@name
这么简单的存储过程,都不会用?
sqlconnection
conn
=
new
sqlconnection("data
source=tq-pc;initial
catalog=tq;user
id=sa;password=123");
sqlcommand
cmd
=
new
sqlcommand("update_login",
conn);
cmd.commandtype
=
commandtype.storedprocedure;
cmd.parameters.addwithvalue("@name",
textbox3.text.trim());
cmd.parameters.addwithvalue("@password",
textbox4.text.trim());
conn.open();
int
i
=
cmd.executenonquery();
if
(i
>
0)
response.write("密码修改成功!");
else
response.write("密码修改失败!");
gaowei5658
2009-07-02 · TA获得超过124个赞
知道小有建树答主
回答量:110
采纳率:0%
帮助的人:112万
展开全部
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

create proc a --创建存储过程名字为a,再次运行时将create改为alter
@sname nvarchar(100)='' --传递的参数
as

select a.sno,b.cname,c.grade from student a,course b,sc c --分别给表命名为a,b,c
where a.sname=@sname and a.sno = c.sno and b.cno=c.cno --查询条件

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

exec a '名字' --执行存储过程语句,可在存储过程外

这次呢?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
化卯
2009-07-02
知道答主
回答量:11
采纳率:0%
帮助的人:0
展开全部
create proc myproc
@sname nvarchar(50)
as
declare @sno int --比如是学号
declare @cname nvarchar(50)--比如是课程名称
declare @grade int --比如是课程成绩
select @sno=st.sno,@cname=co.cname,@grade=sc.grade from student as st
inner join sc as sc on sc.sno=st.sno inner join course as co on co.cno=sc.cno where st.sname=@sname
print @sno
print @grade
print @cname
exec myproc '姓名'

你可以根据此存储过程并针对你数据库所需要的字段进行修改,
在不了解你数据库字段意义的情况下只能帮你这么多
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
csuxp2008
2009-07-01 · TA获得超过6485个赞
知道大有可为答主
回答量:4704
采纳率:50%
帮助的人:2466万
展开全部
oracle下的procedure

create or replace procedure get_imfor(name varchar2,no out number,
v_cname out varchar2,v_grade out number)
--name 默认为输入参数,no、v_canme、v_grade为输出参数
is
begin
select a.sno,b.cname,c.grade into no,v_cname,v_grade
from student a,course b,sc c
where a.sno=c.sno and
b.cno=c.cno and
upper(s.name)=upper(name);
--upper()函数将字符串全部小写,也就是忽略大小写的意思
end get_imfor;

这是oralce下的过程,sql server下,就需要你自己稍加修改
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yhb8618
2009-07-01
知道答主
回答量:26
采纳率:0%
帮助的人:18.5万
展开全部
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE sp_Getinfo
@ag_sname nchar(10) --传递的参数
AS
BEGIN
select 你想要的字段
from student a,
course b,
sc C
where a.sno = c.sno
and b.cno = c.cno
and trim(a.sname) = @ag_sname --简单的链接,把参数写到语句里
END
GO
--执行语句 EXEC sp_Getinfo '名字'
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式