读书人

新手 存储过程有关问题

发布时间: 2012-01-28 22:06:13 作者: rapoo

新手 存储过程问题


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

读书人网 >asp.net

热点推荐