declare @n int,@a varchar(40) set @n=5 set @a='' exec 'select top 1 '+@a+' = glass_amount from glass_lable where lable_ID not in (select top '+rtrim(@n)+' lable_ID from glass_lable)'
--猜一个 declare @s nvarchar(200) set @s='select top '+@n+'+1 @a=glass_amount from glass_lable order by lable_ID desc' exec sp_executesql @s,N'@a int output',@a output select @a
提示在 select top 1附近有语法错误
declare @s nvarchar(8000),@a int set @s = 'select top 1 @a = glass_amount from glass_lable where lable_ID not in (select top '+ltrim(@n)+' lable_ID from glass_lable)' exec sp_executesql @s,'@a int output',@a outselect @a
的确写错了declare @n int set @n=5 exec 'declare @a varchar(40) ;select top 1 @a = glass_amount from glass_lable where lable_ID not in (select top '+rtrim(@n)+' lable_ID from glass_lable)'
我是想第@n+1条记录的那一列的值,这里的top'+@n+'+1是不是应该会有多个。我按照你的意思改成 set @sqls=' select top 1 @m = glass_amount from glass_lable where lable_ID not in (select top ' +@n+ ' lable_ID from glass_lable)'; exec sp_executesql @sqls,N'@m int output',@m output select @m 提示: 服务器: 消息 245,级别 16,状态 1,过程 UpdateGalss_lable2,行 28将 varchar 值 ' select top 1 @m = glass_amount from glass_lable where lable_ID not in (select top ' 转换为数据类型为 int 的列时发生语法错误。
已經排序了 只會取排序的第一個值 +@n+ 忘記轉換了 +ltrim(@n)+
直接这样写,提示语法错误,改成: set @sqls='declare @a varchar(40) ;select top 1 @a = glass_amount from glass_lable where lable_ID not in (select top '+rtrim(@n)+' lable_ID from glass_lable)'; exec sp_executesql @sqls,N'@a int output',@m output select @m 但是因为要循环执行,提示:变量名 '@a' 已声明。
问题解决了,多谢各位前辈,给分 set @sqls=' select top 1 @m = glass_amount from glass_lable where lable_ID not in (select top ' +ltrim(@n)+ ' lable_ID from glass_lable)'; exec sp_executesql @sqls,N'@m int output',@m output
set @n=5
set @a=''
exec 'select top 1 '+@a+' = glass_amount from glass_lable where lable_ID not in (select top '+rtrim(@n)+' lable_ID from glass_lable)'
declare @s nvarchar(200)
set @s='select top '+@n+'+1 @a=glass_amount from glass_lable order by lable_ID desc'
exec sp_executesql @s,N'@a int output',@a output
select @a
set @s = 'select top 1 @a = glass_amount from glass_lable where lable_ID not in (select top '+ltrim(@n)+' lable_ID from glass_lable)'
exec sp_executesql @s,'@a int output',@a outselect @a
的确写错了declare @n int
set @n=5
exec 'declare @a varchar(40) ;select top 1 @a = glass_amount from glass_lable where lable_ID not in (select top '+rtrim(@n)+' lable_ID from glass_lable)'
我是想第@n+1条记录的那一列的值,这里的top'+@n+'+1是不是应该会有多个。我按照你的意思改成
set @sqls=' select top 1 @m = glass_amount from glass_lable where lable_ID not in (select top ' +@n+ ' lable_ID from glass_lable)';
exec sp_executesql @sqls,N'@m int output',@m output
select @m
提示:
服务器: 消息 245,级别 16,状态 1,过程 UpdateGalss_lable2,行 28将 varchar 值 ' select top 1 @m = glass_amount from glass_lable where lable_ID not in (select top ' 转换为数据类型为 int 的列时发生语法错误。
只會取排序的第一個值
+@n+ 忘記轉換了
+ltrim(@n)+
直接这样写,提示语法错误,改成:
set @sqls='declare @a varchar(40) ;select top 1 @a = glass_amount from glass_lable where lable_ID not in (select top '+rtrim(@n)+' lable_ID from glass_lable)';
exec sp_executesql @sqls,N'@a int output',@m output
select @m
但是因为要循环执行,提示:变量名 '@a' 已声明。
set @sqls=' select top 1 @m = glass_amount from glass_lable where lable_ID not in (select top ' +ltrim(@n)+ ' lable_ID from glass_lable)';
exec sp_executesql @sqls,N'@m int output',@m output