关于存储过程参数传递的问题

laeep 2005-06-21 11:35:29
我要实现的功能是
if ClassEName <> "" then
HotNewsSql = "Select *,NewsClass.FileExtName as ClassFileExtName,News.FileExtName as NewsFileExtName from News,NewsClass where News.ClassID=NewsClass.ClassID and DelTF=0 and News.AuditTF=1 and NewsClass.ClassEName='" & ClassEName & "' order by News.ClickNum Desc"
else
HotNewsSql = "Select *,NewsClass.FileExtName as ClassFileExtName,News.FileExtName as NewsFileExtName from News,NewsClass where News.ClassID=NewsClass.ClassID and DelTF=0 and News.AuditTF=1 order by News.ClickNum Desc"
end if
我的存储过程是这样写的

CREATE Procedure FS_ReFunHotNews
(@ClassEName varchar(100))
as
begin transaction
declare @TempSql varchar(1500)
Set @TempSql='Select *,NewsClass.FileExtName as ClassFileExtName,News.FileExtName as NewsFileExtName from News,NewsClass where News.ClassID=NewsClass.ClassID and DelTF=0 and News.AuditTF=1'+@ClassEName+' order by News.ClickNum Desc'
exec(@TempSql)
if @@error=0
commit transaction
else
rollback transaction
return
GO
我要问的是
我怎么把参数 and NewsClass.ClassEName='" & ClassEName & "'传进去

或者改存储过程也行,怎么改?
...全文
107 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
vivianfdlpw 2005-06-21
  • 打赏
  • 举报
回复
两个单引号相当于一个普通的单引号
laeep 2005-06-21
  • 打赏
  • 举报
回复
鱼 你写错了,忘了加@了 呵呵
laeep 2005-06-21
  • 打赏
  • 举报
回复
NewsClass.ClassEName='''+@ClassEName+''' order by News.ClickNum Desc'
为什么这么多的单引号
这样不行吗
NewsClass.ClassEName='+@ClassEName+' order by News.ClickNum Desc'
或者
NewsClass.ClassEName='+cast(@ClassEName as varchar(100))+' order by News.ClickNum Desc'
laeep 2005-06-21
  • 打赏
  • 举报
回复
看着好长呀,不舒服呀
paoluo 2005-06-21
  • 打赏
  • 举报
回复
传入的时候,直接传 ClassEName 的值,不用做处理了。
paoluo 2005-06-21
  • 打赏
  • 举报
回复
存储过程改为这样即可

CREATE Procedure FS_ReFunHotNews
(@ClassEName varchar(100))
as
begin transaction
declare @TempSql varchar(1500)
If ClassEName <> ""
Set @TempSql='Select *,NewsClass.FileExtName as ClassFileExtName,News.FileExtName as NewsFileExtName from News,NewsClass where News.ClassID=NewsClass.ClassID and DelTF=0 and News.AuditTF=1 and NewsClass.ClassEName='''+@ClassEName+''' order by News.ClickNum Desc'
Else
Set @TempSql='Select *,NewsClass.FileExtName as ClassFileExtName,News.FileExtName as NewsFileExtName from News,NewsClass where News.ClassID=NewsClass.ClassID and DelTF=0 and News.AuditTF=1 order by News.ClickNum Desc'
exec(@TempSql)
if @@error=0
commit transaction
else
rollback transaction
return
GO
laeep 2005-06-21
  • 打赏
  • 举报
回复
单引号 怎么传进去?就是那个变量ClassEName

34,589

社区成员

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

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