用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 '王敏'
下面得到的结果却是空的 展开
student表下有sno(主键),sname,sage,ssex,sdept
course表下有cno(主键),cname,ccredit,cpno
sc表下有sno,cno,grade(sno和cno与上面的关联)
完全不懂存储过程,请直接贴上SQL语句,最好有相应说明!
只有三楼的能正常运行
可是明明student表里面存在的条目 (比如王敏)
运行:
exec a '王敏'
下面得到的结果却是空的 展开
5个回答
展开全部
关于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("密码修改失败!");
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("密码修改失败!");
展开全部
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 '名字' --执行存储过程语句,可在存储过程外
这次呢?
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 '名字' --执行存储过程语句,可在存储过程外
这次呢?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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 '姓名'
你可以根据此存储过程并针对你数据库所需要的字段进行修改,
在不了解你数据库字段意义的情况下只能帮你这么多
@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 '姓名'
你可以根据此存储过程并针对你数据库所需要的字段进行修改,
在不了解你数据库字段意义的情况下只能帮你这么多
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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下,就需要你自己稍加修改
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下,就需要你自己稍加修改
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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 '名字'
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 '名字'
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询