首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

sql存储过程,该如何解决

2012-05-23 
sql存储过程SQL codeSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO--

sql存储过程

SQL code
SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author:        <Author,,Name>-- Create date: <Create Date,,>-- Description:    <Description,,>-- =============================================CREATE PROCEDURE Bolg_SelectByUser@clanID int,@UserID text,@topNum intASBEGIN   EXECUTE Clan_SelectByIDUserID @ClanID,@UserID OUTPUT   select top @topNum * from GH_BLog where UserID in (@UserID) order by LastModTime descENDGO

这个存储过程。因为我查的是多个用户。所以ID比较长,用TEXT了。这个过程主要作用是,传入一个家族的ID,在传入查询多少条,现在报错了


消息 102,级别 15,状态 1,过程 Bolg_SelectByUser,第 14 行
'@topNum' 附近有语法错误。


[解决办法]
@sql='select top'+ @topNum+' * from GH_BLog ....

exec(@sql)
[解决办法]
select top (@topNum) * from GH_BLog
[解决办法]
选中Top然后F1


TOP (expression) [PERCENT]
[ WITH TIES ]
]
参数 
expression
指定返回行数的数值表达式。如果指定了 PERCENT,则 expression 将隐式转换为 float 值;否则,它将转换为 bigint。

在 INSERT、UPDATE、MERGE 和 DELETE 语句中,需要使用括号来分隔 TOP 中的 expression。为保证向后兼容性,支持在 SELECT 使用不包含括号的 TOP expression,但不推荐这种用法。

[解决办法]
给你改下:可以试一试
SQL code
SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author:        <Author,,Name>-- Create date: <Create Date,,>-- Description:    <Description,,>-- =============================================CREATE PROCEDURE Bolg_SelectByUser@clanID int,@UserID text,@topNum intASBEGIN   Declare @SqlStr varchar(max)   EXECUTE Clan_SelectByIDUserID @ClanID,@UserID OUTPUT   Set @SqlStr = 'select top ' + Cast(@topNum As Varchar(10)) + ' * from GH_BLog where UserID in (' + @UserID + ') order by LastModTime desc '   Exec(@SqlStr)ENDGO
[解决办法]
就是把报错的那句改成动态sql 执行应该就没问题了

热点排行