declare @ls_temp_tablename char(32)
declare @ls_print varchar(100),@ls_print_z varchar(100),@ls_print_key varchar(100)
DECLARE authors_cursor CURSOR FOR
SELECT DISTINCT tablename
FROM r_temptable
WHERE (isbill = 1) ----
OPEN authors_cursor
FETCH NEXT FROM authors_cursor INTO @ls_temp_tablename
WHILE @@FETCH_STATUS = 0
BEGIN
set @ls_print ='delete from '+ rtrim(@ls_temp_tablename) where billdate<'2013-01-01'
set @ls_print_z ='delete from '+ rtrim(@ls_temp_tablename)+'_z' where billid in set @ls_print_key ='UPDATE as_tablekeys SET maxkey = SELECT isnull(MAX(billID), 0) + 1 FROM rtrim(@ls_temp_tablename) WHERE tablename =rtrim(@ls_temp_tablename) '
EXEC (@ls_print)
EXEC (@ls_print_z)
exec (@ls_print_key)
FETCH NEXT FROM authors_cursor INTO @ls_temp_tablename
END
CLOSE authors_cursor
DEALLOCATE authors_cursor
请问里面的应该怎么使用+号,''号?
set @ls_print ='delete from '+ rtrim(@ls_temp_tablename) where billdate<'2013-01-01'
set @ls_print_z ='delete from '+ rtrim(@ls_temp_tablename)+'_z' where billid in set @ls_print_key ='UPDATE as_tablekeys SET maxkey = SELECT isnull(MAX(billID), 0) + 1 FROM rtrim(@ls_temp_tablename) WHERE tablename =rtrim(@ls_temp_tablename) '
declare @ls_print varchar(100),@ls_print_z varchar(100),@ls_print_key varchar(100)
DECLARE authors_cursor CURSOR FOR
SELECT DISTINCT tablename
FROM r_temptable
WHERE (isbill = 1) ----
OPEN authors_cursor
FETCH NEXT FROM authors_cursor INTO @ls_temp_tablename
WHILE @@FETCH_STATUS = 0
BEGIN
set @ls_print ='delete from '+ rtrim(@ls_temp_tablename) where billdate<'2013-01-01'
set @ls_print_z ='delete from '+ rtrim(@ls_temp_tablename)+'_z' where billid in set @ls_print_key ='UPDATE as_tablekeys SET maxkey = SELECT isnull(MAX(billID), 0) + 1 FROM rtrim(@ls_temp_tablename) WHERE tablename =rtrim(@ls_temp_tablename) '
EXEC (@ls_print)
EXEC (@ls_print_z)
exec (@ls_print_key)
FETCH NEXT FROM authors_cursor INTO @ls_temp_tablename
END
CLOSE authors_cursor
DEALLOCATE authors_cursor
请问里面的应该怎么使用+号,''号?
set @ls_print ='delete from '+ rtrim(@ls_temp_tablename) where billdate<'2013-01-01'
set @ls_print_z ='delete from '+ rtrim(@ls_temp_tablename)+'_z' where billid in set @ls_print_key ='UPDATE as_tablekeys SET maxkey = SELECT isnull(MAX(billID), 0) + 1 FROM rtrim(@ls_temp_tablename) WHERE tablename =rtrim(@ls_temp_tablename) '
字符串内部的单引号用两个单引号表示,如''''代表一个单引号
set @ls_print ='delete from '+@ls_temp_tablename+' where billdate<''2013-01-01'''
set @ls_print_z ='delete from '+ rtrim(@ls_temp_tablename)+'_z' where billid in set @ls_print_key ='UPDATE as_tablekeys SET maxkey = SELECT isnull(MAX(billID), 0) + 1 FROM rtrim(@ls_temp_tablename) WHERE tablename =rtrim(@ls_temp_tablename) ' 请问这里的 _z应该怎么弄呢?
set @ls_print_key ='UPDATE as_tablekeys SET maxkey = (SELECT isnull(MAX(billID), 0) + 1 FROM
'+rtrim(@ls_temp_tablename)+' WHERE tablename ='''+rtrim(@ls_temp_tablename)+''')'
set @ls_print ='delete from '+ rtrim(@ls_temp_tablename) where billdate<'2013-01-01' set @ls_print_z ='delete from '+ rtrim(@ls_temp_tablename)+'_z' where billid in ('select billid from '+ rtrim(@ls_temp_tablename) where billdate<='2013-01-01' )set @ls_print_key ='UPDATE as_tablekeys SET maxkey = SELECT isnull(MAX(billID), 0) + 1 FROM rtrim(@ls_temp_tablename) WHERE tablename =rtrim(@ls_temp_tablename) ' EXEC (@ls_print)
EXEC (@ls_print_z)
exec (@ls_print_key)
set @ls_print_z ='delete from '+ rtrim(@ls_temp_tablename)+'_z
where billid in (select billid from '+rtrim(@ls_temp_tablename)+' where billdate<=''2013-01-01'' )'
set @ls_print_key ='UPDATE as_tablekeys SET maxkey = (SELECT isnull(MAX(billID), 0) + 1 FROM
'+rtrim(@ls_temp_tablename)+' WHERE tablename ='''+rtrim(@ls_temp_tablename)+''')'
将 varchar 值 '(SELECT isnull(max(billid), 0) +1 FROM adjap WHERE tablename = ' 转换为数据类型为 int 的列时发生语法错误。
看一下这条语句涉及的几个字段的数据类型,是否有不匹配的