ALTER PROCEDURE dbo.sell
@pagesize int=5
@page
AS
exec('select top'+' '+cast(@pagesize*@page as varchar)+' '+'* from [wupin] order by id')
--exec('select top'+' '+str(@pagesize*@page)+' '+'* from [wupin] order by id')//这句也不行
请问下,这两句错在哪里了?
@pagesize int=5
@page
AS
exec('select top'+' '+cast(@pagesize*@page as varchar)+' '+'* from [wupin] order by id')
--exec('select top'+' '+str(@pagesize*@page)+' '+'* from [wupin] order by id')//这句也不行
请问下,这两句错在哪里了?
1 :普通SQL语句可以用Exec执行 eg: Select * from tableName
Exec('select * from tableName')
Exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N 2:字段名,表名,数据库名之类作为变量时,必须用动态SQL eg:
declare @fname varchar(20)
set @fname = 'FiledName'
Select @fname from tableName -- 错误,不会提示错误,但结果为固定值FiledName,并非所要。
Exec('select ' + @fname + ' from tableName') -- 请注意 加号前后的 单引号的边上加空格 当然将字符串改成变量的形式也可
declare @fname varchar(20)
set @fname = 'FiledName' --设置字段名 declare @s varchar(1000)
set @s = 'select ' + @fname + ' from tableName'
Exec(@s) -- 成功
exec sp_executesql @s -- 此句会报错 declare @s Nvarchar(1000) -- 注意此处改为nvarchar(1000)
set @s = 'select ' + @fname + ' from tableName'
Exec(@s) -- 成功
exec sp_executesql @s -- 此句正确 3. 输出参数
declare @num int,
@sqls nvarchar(4000)
set @sqls='select count(*) from tableName'
exec(@sqls)
--如何将exec执行结果放入变量中? declare @num int,
@sqls nvarchar(4000)
set @sqls='select @a=count(*) from tableName '
exec sp_executesql @sqls,N'@a int output',@num output
select @num
@pagesize int=5
@page
AS
exec( 'select top ' + cast(@pagesize*@page as varchar)+ ' * into tmp from [wupin] order by id')
@pagesize int=5,
@page int
AS
exec( 'select top ' + cast(@pagesize*@page as varchar)+ ' * into tmp from [wupin] order by id')
还是不行,提示cast附近有错误。
@pagesize int=5
@page int = 1
AS
exec( 'select top ' + cast(@pagesize*@page as varchar)+ ' * into tmp from [wupin] order by id')
ALTER PROCEDURE dbo.sell
@pagesize int=5 ,
@page int = 1
AS
exec( 'select top ' + cast(@pagesize*@page as varchar)+ ' * into tmp from [wupin] order by id')
服务器: 消息 170,级别 15,状态 1,过程 sell1,行 5
第 5 行: 'cast' 附近有语法错误。
@pagesize int=5,
@page int
AS
--set nocount on
declare @pageall int,@pageallchar varchar(200)
set @pageall=@pagesize*@page
set @Pageallchar=cast(@pageall as varchar)exec( 'select top '+ ' '+@Pageallchar+ ' '+ '* from [wupin] order by id ')
--set nocount off
Go
--不知道这个对楼主有没有帮助
ALTER PROCEDURE dbo.sell
@pagesize int=5,
@page int
AS
--set nocount on
declare @pageall int,@pageallchar varchar(200)
set @pageall=@pagesize*@page
set @Pageallchar=cast(@pageall as varchar) exec( 'select top '+ ' '+@Pageallchar+ ' '+ '* from [wupin] order by id ')
--set nocount off
Go
--不知道这个对楼主有没有帮助
--------------------
这个能运行。
可是直接这样写exec('select top'+ ' '+cast(@pagesize*@page as varchar)+' '+'* from[wupin] order by id ')在哪出错?
@pagesize int=5,
@page INT
AS
exec( 'select top '+ ' '+'cast('+@pagesize+'*'+@page+' as varchar)'+ ' '+ '* from [wupin] order by id ')
这个应该可以
exec('select top'+' '+'cast('+@pagesize+'* '+@page+‘ as varchar) '+’ '+'* from [wupin] order by id') 这样可以。
3q
还有错。
继续问:
ALTER PROCEDURE dbo.sell
@pagesize int=5,
@page int
AS
--set nocount on
declare @pageall int,@pageallchar varchar(200)
set @pageall=@pagesize*@page
set @Pageallchar=cast(@pageall as varchar) exec( 'select top '+ ' '+@Pageallchar+ ' '+ '* from [wupin] order by id ')
--set nocount off
Go
--不知道这个对楼主有没有帮助
--------------------
这个能运行。
可是直接这样写exec( 'select top '+ ' '+cast(@pagesize*@page as varchar)+ ' '+ '* from[wupin] order by id ')在哪出错?
在exec子句当中不能包含变量运算表达式,如果其中存在变量运算表达式的操作的操作,需先进入字符串拼接的方式把其表达达的值先计算出来方能使用
是csdn上的高手帮解决的。
3q