存储过程方面的问题,请各位帮忙给看看,急用,谢了!分不够来这领,谢了!

redblues 2004-04-17 03:30:26
想实现下面这段代码的功能,用存储过程实现,老是写不对,请各位指点!
if(dep<>"无") then
set RS=conn.execute("select * from doctorinfo where " _
& "name like '%" & request.form("doctorkey") & "%' and " _
& "department ='" & request.form("department") & "'")
else
set rs=conn.execute("select * from doctorinfo where " _
& "name like '%" & request.form("doctorkey") & "%'")
end if
我写的是这样
create proc searchdoctor @dep char(30),@name char(20)
as
if dep<>'无'
select * from doctorinfo where name like '%+@doctor+%' and department ='+@dep
else
select * from doctorinfo where name like '%+@doctor+%'
go
不会写带参数的,还有就是 like '%fff%' 这种类型带参数的怎么写呀?
...全文
47 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
redblues 2004-04-18
  • 打赏
  • 举报
回复
楼上说得没错,的确就是那个调用语句的毛病,搞得我这几天重启了N道机器,不过刚才又死了,呵呵,这次是因为拨号上网的毛病,老毛病也是顽疾!谢谢各位了!
CCEO 2004-04-18
  • 打赏
  • 举报
回复
create proc searchdoctor @dep char(30),@name char(20)
as
if @dep<>'无'
select * from doctorinfo where name like '%'+rtrim(@doctor)+'%' and department =@dep
else
select * from doctorinfo where name like '%'+rtrim(@doctor)+'%'
go

这样也可以,但是你的问题在于调用的代码不对
redblues 2004-04-17
  • 打赏
  • 举报
回复
connectdb就是verifymanager!

to aierong(皑婀瑢-AiEong联盟会厅长):
当我只输入用户名,不输密码时,还是不对,明明数据库中有这么个用户存在可是该存储过程查询不到,用户无法进入。各位帮我再看看,折腾了好久,还是没解决。另外在插入和修改的操作中也存在这个问题,我将SQL语句换成存储过程就出这个问题。
redblues 2004-04-17
  • 打赏
  • 举报
回复
to aierong(皑婀瑢-AiEong联盟会厅长):
我觉得这样写就可以了,可是不对,我在ASP中调用该存储过程,网页反应迟钝,最后就是机器反应迟钝,请帮我再看看,谢了!
create proc searchdoctor @dep char(30),@name char(20)
as
declare @sql varchar(8000)
select @sql='select * from doctorinfo where name like '''+@doctor+'%'''
if @dep<>'无'
begin
select @sql=@sql+' and department='+@dep
end
exec(@sql)
go
redblues 2004-04-17
  • 打赏
  • 举报
回复
谢谢,我先试试!感激呀!
aierong 2004-04-17
  • 打赏
  • 举报
回复
create proc searchdoctor
@dep char(30),
@name char(20),
@doctor varchar(4000)
as
declare @sql varchar(8000)
select @sql='select * from doctorinfo where name like '''+@doctor+'%'''
if @dep<>'无'
begin
select @sql=@sql+' and department='+convert(varchar(4000),@dep)
end
exec(@sql)
go
sparkcn 2004-04-17
  • 打赏
  • 举报
回复
if dep<>'无' ===>if @dep<>'无'
----------------------------
我在插入一条记录之前,想先判断(有无此必要?)
--这要看你的要求了,是否允许插入重复纪录
我觉得用存储过程有点别扭,你可设定几个主健或者唯一索引

然后在vb or asp 中

on error resume next
if err.num ='' then '看看插入重复纪录的错误号
msgbox '次条目已存在'

end if

把你的verifymanager 铁出来看看

aierong 2004-04-17
  • 打赏
  • 举报
回复
CREATE procedure connectdb
@username varchar(20)='', --自己设置的默认数值
@password varchar(20)='' --自己设置的默认数值
as
select name, psd
from managerinfo
where name=@username and psd=@password


如果你在调用过程时,不传参数,参数会用默认的数值
aierong 2004-04-17
  • 打赏
  • 举报
回复
if exists(select * from tablename where 条件。。。)
print 'exist'
else
print 'no exist'

用这个判断查处是否有记录
redblues 2004-04-17
  • 打赏
  • 举报
回复
问题不少,还有一个:
这是我在ASP中的一条调用存储过程的语句
rs.Open "Exec verifymanager "&nm&","&pd,conn,1,1
奇怪的是如果我插入的参数值为空,该语句执行结果就不对,无论是插入、查询还是修改都有此问题。
存储过程如下:
CREATE procedure connectdb @username varchar(20),@password varchar(20)
as
select name, psd
from managerinfo
where name=@username and psd=@password
GO
redblues 2004-04-17
  • 打赏
  • 举报
回复
还想问问,比如:
我在插入一条记录之前,想先判断(有无此必要?)该记录是否存在,然后根据查询结果插入记录,请问这样的存储过程怎么写,主要是怎么判断查询结果是否为空?各位一定要帮帮我。多少分都没问题的,我想了解存储过程这块,谢谢!
redblues 2004-04-17
  • 打赏
  • 举报
回复
分不够来这http://expert.csdn.net/Expert/topic/2976/2976498.xml?temp=.4672663

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧