问题二:帮我看看这语句,老是提示出错:
begin tranDECLARE @random_num integer ,
@read_date varchar(10)select @random_num = 10
select @read_date = '2003-12-05'exec ('select top ' + @random_num + ' * from print_insert where convert(char(10),cp_r_day,20) = '+ @read_date + ' order by newid()')总是说“将 varchar 值 '2003-12-05' 转换为数据类型为 int 的列时发生语法错误。”
为什么呢
begin tranDECLARE @random_num integer ,
@read_date varchar(10)select @random_num = 10
select @read_date = '2003-12-05'exec ('select top ' + @random_num + ' * from print_insert where convert(char(10),cp_r_day,20) = '+ @read_date + ' order by newid()')总是说“将 varchar 值 '2003-12-05' 转换为数据类型为 int 的列时发生语法错误。”
为什么呢
select * from print_insert where cp_r_day >= '2003-12-05 00:00:000' and cp_r_day <='2003-12-06 00:00:000'
2:exec ('select top ' + cast(@random_num as varchar(5)) + ' * from print_insert where convert(char(10),cp_r_day,20) = '+ @read_date + ' order by newid()')
select * from print_insert where datediff(day,cp_r_day,'2003-12-05')=0--或者:
select * from print_insert where cp_r_day>='2003-12-05' and cp_r_day<'2003-12-06'
你好,我是请教语句优化的那个,
我想再请问一下,现在这句语句又要如何写呢begin tran DECLARE @random_num integer , @get_random_num integer , @read_date char(10)
exec ('select '+ @random_num + ' = count(cp_tno) from print_insert where convert(char(10),cp_r_day,20) = ''' +@read_date+ ''' and cp_month_page = cp_total_page')现在提示是说"第 1 行: '=' 附近有语法错误。"
那直接用
exec ('select @random_num = count(cp_tno) from print_insert where convert(char(10),cp_r_day,20) = ''' +@read_date+ ''' and cp_month_page = cp_total_page')这句是什么意思?要给@random_num赋值吗?