非常简单的sql语句问题

jiangxuli 2009-12-16 11:49:33

create proc GetPr
(
@productname varchar(20),
@serialnumber varchar(20)
)
as
declare @sqlstr varchar(1000)
set @sqlstr ='SELECT p.productid,p.catid, p.productname, p.serialnumber, p.price, p.curprice, p.discount,
(select TOp 1 imagefile from productimage where productid=p.productid and priority=(case when (select Count(*) from productimage
where productid=p.productid and priority=1)>0 then 1 else 0 end )) AS imagefile, (SELECT top 1 whratio FROM productimage WHERE productid =
p.productid) AS whratio FROM productinfo p INNER JOIN category c ON p.catid = c.catid where 1=1 '
if(@productname<>'')
begin
@sqlstr=@sqlstr+'and p.productname like '+'%'+@productname+'%'''end
if(@serialnumber<>'')
begin
@sqlstr=@sqlstr+'and p.serialnumber like '+'%'+@serialnumber+'%'end
print @sqlstr
exec(@sqlstr)


运行报错:

服务器: 消息 170,级别 15,状态 1,过程 GetPr,行 14
第 14 行: '@sqlstr' 附近有语法错误。
服务器: 消息 170,级别 15,状态 1,过程 GetPr,行 18
第 18 行: '@sqlstr' 附近有语法错误。


谁能帮我改下啊,我改来改去,怎么都是这个错误?
...全文
70 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiangxuli 2009-12-16
  • 打赏
  • 举报
回复
哈哈,实在是不好意思,一时大意了,谢谢各位了
chenjianyong94 2009-12-16
  • 打赏
  • 举报
回复
set @sqlstr=@sqlstr+'and p.productname like '+'''%'+@productname+'%'''

赋值必须有set 或者select

create proc GetPr
(
@productname varchar(20),
@serialnumber varchar(20)
)
as
declare @sqlstr varchar(1000)
set @sqlstr ='SELECT p.productid,p.catid, p.productname, p.serialnumber, p.price, p.curprice, p.discount,
(select TOp 1 imagefile from productimage where productid=p.productid and priority=(case when (select Count(*) from productimage
where productid=p.productid and priority=1)>0 then 1 else 0 end )) AS imagefile, (SELECT top 1 whratio FROM productimage WHERE productid =
p.productid) AS whratio FROM productinfo p INNER JOIN category c ON p.catid = c.catid where 1=1 '
if(@productname<>'')
begin
set @sqlstr=@sqlstr+'and p.productname like '+'%'+@productname+'%''' end
if(@serialnumber<>'')
begin
set @sqlstr=@sqlstr+'and p.serialnumber like '+'%'+@serialnumber+'%'end
print @sqlstr
exec(@sqlstr)
「已注销」 2009-12-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lwp1493 的回复:]
@sqlstr=@sqlstr+'and p.productname like '+'''%'+@productname+'%'''
[/Quote]

set @sqlstr=@sqlstr+'and p.productname like '+'''%'+@productname+'%'''

赋值必须有set 或者select
我姓区不姓区 2009-12-16
  • 打赏
  • 举报
回复

create proc GetPr
(
@productname varchar(20),
@serialnumber varchar(20)
)
as
declare @sqlstr varchar(1000)
set @sqlstr ='SELECT p.productid,p.catid, p.productname, p.serialnumber, p.price, p.curprice, p.discount,
(select TOp 1 imagefile from productimage where productid=p.productid and priority=(case when (select Count(*) from productimage
where productid=p.productid and priority=1)>0 then 1 else 0 end )) AS imagefile, (SELECT top 1 whratio FROM productimage WHERE productid =
p.productid) AS whratio FROM productinfo p INNER JOIN category c ON p.catid = c.catid where 1=1 '
if(@productname<>'')
begin
set @sqlstr=@sqlstr+'and p.productname like '+'%'+@productname+'%''' end
if(@serialnumber<>'')
begin
set @sqlstr=@sqlstr+'and p.serialnumber like '+'%'+@serialnumber+'%'end
print @sqlstr
exec(@sqlstr)

ITDC_YiWang 2009-12-16
  • 打赏
  • 举报
回复
顶下
jiangxuli 2009-12-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lwp1493 的回复:]
@sqlstr=@sqlstr+'and p.productname like '+'''%'+@productname+'%'''
[/Quote]

同样的错误,

服务器: 消息 170,级别 15,状态 1,过程 GetPr,行 14
第 14 行: '@sqlstr' 附近有语法错误。
服务器: 消息 170,级别 15,状态 1,过程 GetPr,行 18
第 18 行: '@sqlstr' 附近有语法错误。
「已注销」 2009-12-16
  • 打赏
  • 举报
回复
@sqlstr=@sqlstr+'and p.productname like '+'''%'+@productname+'%'''
jiangxuli 2009-12-16
  • 打赏
  • 举报
回复

create proc GetPr
(
@productname varchar(20),
@serialnumber varchar(20)
)
as
declare @sqlstr varchar(1000)
set @sqlstr ='SELECT p.productid,p.catid, p.productname, p.serialnumber, p.price, p.curprice, p.discount,
(select TOp 1 imagefile from productimage where productid=p.productid and priority=(case when (select Count(*) from productimage
where productid=p.productid and priority=1)>0 then 1 else 0 end )) AS imagefile, (SELECT top 1 whratio FROM productimage WHERE productid =
p.productid) AS whratio FROM productinfo p INNER JOIN category c ON p.catid = c.catid where 1=1 '
if(@productname<>'')
begin
@sqlstr=@sqlstr+'and p.productname like '+'%'+@productname+'%'''
end
if(@serialnumber<>'')
begin
@sqlstr=@sqlstr+'and p.serialnumber like '+'%'+@serialnumber+'%'
end
print @sqlstr
exec(@sqlstr)

62,264

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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