新手 存储过程问题
create proc Index_admin_news2
@tiaojian nvarchar(1000)
as
if (@tiaojian != ' ')
set @tiaojian = ' and '+ @tiaojian
select top 5 News_Title,News_Id,News_Type from admin_news where news_yn=1 + @tiaojian + order by news_id desc
创建的时候 说
在关键字 'order ' 附近有语法错误。
帮忙看一下
------解决方案--------------------select top 5 News_Title,News_Id,News_Type from admin_news where news_yn=1 + @tiaojian order by news_id desc
------解决方案--------------------select top 5 News_Title,News_Id,News_Type from admin_news where news_yn=1
+ @tiaojian
+...
是什么意思啊
------解决方案--------------------+ @tiaojian + 这样写会有语法错误
anncesky()写的是把语句直接付给@oversql ,在用exec方法执行,
在set @oversql = 'select top 5 News_Title,News_Id,News_Type from admin_news where news_yn=1 ' + @tiaojian + 'order by news_id desc '把语句分成了 'select top 5 News_Title,News_Id,News_Type from admin_news where news_yn=1 ;
@tiaojian ;
order by news_id desc;
三段结合起来才是一个完整的语句,
而你的 select top 5 News_Title,News_Id,News_Type from admin_news where news_yn=1 + @tiaojian + order by news_id desc
就是明显的语法错误了
------解决方案--------------------对!向上面那样。
------解决方案--------------------顶
------解决方案--------------------在SQL里,BEGIN 和 END 相当于C#里的{ 和 }
------解决方案--------------------学习
------解决方案--------------------ALTER proc Index_admin_news3
@tiaojian nvarchar(1000)
as
declare @Strsql nvarchar(1000)
declare @Strwhere nvarchar(1000)
if (@tiaojian != ' ')
begin
set @Strwhere = ' and '+ @tiaojian
set @Strsql = 'select top 5 News_Title,News_Id,News_Type from admin_news where news_yn=1 ' + @Strwhere + ' order by news_id desc '
end
else
begin
set @Strsql = '空 '
end
print @Strsql
------解决方案--------------------!= 应改为 <>
------解决方案--------------------IF
begin
.......
END
ELSE
begin
.......
END