create proc p_show_active @num int as Exec('select top ' +cast(@num as varchar(20)) + ' * from t_s08_khhd order by id desc')
create proc p_show_active @num int as Exec('select top ' +cast(@num as varchar(20)) + ' * from t_s08_khhd order by id desc')
为什么TOP后面的参数要这样写??不懂啊
必须用动态SQL,没办法,如果字段名,表名也用参数的话也必须这样用动态SQL。
必须用动态SQL,没办法,如果字段名,表名也用参数的话也必须这样用动态SQL。
create proc p_show_active @num int as declare @sql nvarchar(1000) select @sql='select top ' +cast(@num as varchar(20)) + ' * from t_s08_khhd order by id desc' exec sp_executesql @sql
create proc p_show_active @num varchar(5) as select top cast(@num as int) * from t_s08_khhd order by id desc
我写的 CREATE proc p_show_customer @num int,@type varchar(50) as declare @sql nvarchar(1000) select @sql='select top ' +cast(@num as varchar(20)) + ' * from t_s06_khda where lb='+@type+' order by zcrq desc' exec sp_executesql @sql GO 存储过程语法正确的 然后调用: exec p_show_customer '10' '服务' 错误提示: 服务器: 消息 170,级别 15,状态 1,行 1 Line 1: Incorrect syntax near '服务'. 为什么??
CREATE proc p_show_customer @num int,@type nvarchar(50) as declare @sql nvarchar(1000) select @sql='select top ' +cast(@num as nvarchar(20)) + ' * from t_s06_khda where lb='+@type+' order by zcrq desc' exec sp_executesql @sqlexec p_show_customer 10, '服务'
@num int
as
Exec('select top ' +cast(@num as varchar(20)) + ' * from t_s08_khhd order by id desc')
@num int
as
Exec('select top ' +cast(@num as varchar(20)) + ' * from t_s08_khhd order by id desc')
create proc p_show_active
@num int
as
declare @sql nvarchar(1000)
select @sql='select top ' +cast(@num as varchar(20)) + ' * from t_s08_khhd order by id desc'
exec sp_executesql @sql
@num varchar(5)
as
select top cast(@num as int) * from t_s08_khhd order by id desc
CREATE proc p_show_customer
@num int,@type varchar(50)
as
declare @sql nvarchar(1000)
select @sql='select top ' +cast(@num as varchar(20)) + ' * from t_s06_khda where lb='+@type+' order by zcrq desc'
exec sp_executesql @sql
GO
存储过程语法正确的
然后调用:
exec p_show_customer '10' '服务'
错误提示:
服务器: 消息 170,级别 15,状态 1,行 1
Line 1: Incorrect syntax near '服务'.
为什么??
少了","
CREATE proc p_show_customer
@num int,@type nvarchar(50)
as
declare @sql nvarchar(1000)
select @sql='select top ' +cast(@num as nvarchar(20)) + ' * from t_s06_khda where lb='+@type+' order by zcrq desc'
exec sp_executesql @sqlexec p_show_customer 10, '服务'