请问这个存储过程应该怎样写?

zengzhimin1980 2008-10-17 10:34:30
以下这个存储过程没有语法上错误,但是却未能做到我所想做的事情,请教一下:

CREATE PROCEDURE plist1
@keyWord varchar(50)

AS
declare @sql varchar(2000)
set @sql='select * from student where 1=1'
if(@keyWord!='')
begin
set @sql=@sql+' and name like ''%'+@keyWord+'%'''
end


exec(@sql)
GO


...全文
71 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ouyang76cn 2008-10-17
  • 打赏
  • 举报
回复
如果表的数据量不是很大,你这样就行了.

CREATE Procedure plist1
@keyWord varchar(50)
AS
Select * From student Where name like '%'+@keyWord+'%' Order By id Desc
GO
当@keyWord为''时,自然会返回所有的记录,@keyWord内有内容时则搜索匹配记录.
不过在Like前面加上通配符%,会无法使用索引(引起全表扫描).
对匹配要求不太严时,可使用like @keyWord+'%'
mustudent 2008-10-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zengzhimin1980 的回复:]
我是想问一下是否能好像我这样拼接查询语句?
[/Quote]
可以!
henbuxiaxin 2008-10-17
  • 打赏
  • 举报
回复
不知道你是不是想要这种效果
CREATE PROCEDURE plist1
@keyWord varchar(50) =''

AS
declare @sql varchar(2000)
set @sql='select * from student where 1=1'
if(@keyWord!='')
begin
set @sql=@sql+' and name like ''%'+@keyWord+'%'''
end


exec(@sql)
GO
可以带参数也可以不带参数
zengzhimin1980 2008-10-17
  • 打赏
  • 举报
回复
我是想问一下是否能好像我这样拼接查询语句?
水族杰纶 2008-10-17
  • 打赏
  • 举报
回复
--TRY
CREATE PROCEDURE plist1
@keyWord varchar(50)
AS
declare @sql varchar(2000)
set @sql='select * from student where 1=1'
if(@keyWord!='')
begin
set @sql=@sql+' and name like ''%'+@keyWord+'%'''
exec(@sql)
end
GO
pt1314917 2008-10-17
  • 打赏
  • 举报
回复
语法大致没什么问题。这样改下更好。

CREATE PROCEDURE plist1
@keyWord varchar(50)

AS
declare @sql varchar(2000)
set @sql='select * from student where 1=1'
if(isnull(@keyWord,'')!='')
begin
set @sql=@sql+' and name like ''%'+@keyWord+'%'''
end


exec(@sql)
GO

zanyzyg 2008-10-17
  • 打赏
  • 举报
回复

怎么不可以了?

sql server 2000可以啊.
dlpseeyou 2008-10-17
  • 打赏
  • 举报
回复
set @sql=@sql+' and name like ''%'+@keyWord+'%'''
改为
set @sql=@sql+' and name like '%''+@keyWord+''%''
mustudent 2008-10-17
  • 打赏
  • 举报
回复

CREATE PROCEDURE plist1
(@keyWord varchar(50) )

AS
declare @sql varchar(2000)
set @sql='select * from student where 1=1'
if(@keyWord<>'')
begin
set @sql=@sql+' and name like ''%'+@keyWord+'%'''
end


exec(@sql)
GO
水族杰纶 2008-10-17
  • 打赏
  • 举报
回复
說說你要做的事情~~

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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