你这句不对set @sql=N'insert into ['+ @tblname+'] (dwmc,jg,lxr,hy,jyfw,jj,zcrq,ss,dwdz,tel,zczj,rs) values (@dwmc,@jg,@lxr,@hy,@jyfw,@jj,@zcrq,@ss,@dwdz,@tel,@zczj,@rs)'应该是
set @sql=N'insert into ['+ @tblname+'] (dwmc,jg,lxr,hy,jyfw,jj,zcrq,ss,dwdz,tel,zczj,rs) values ('+@dwmc+','+@jg+','+@lxr+','+@hy+','+@jyfw+','+@jj+','+@zcrq+','+@ss+','+@dwdz+','+@tel+','+@zczj+','+@rs+')'
set @sql=N'insert into ['+ @tblname+'] (dwmc,jg,lxr,hy,jyfw,jj,zcrq,ss,dwdz,tel,zczj,rs) values ('+@dwmc+','+@jg+','+@lxr+','+@hy+','+@jyfw+','+@jj+','+@zcrq+','+@ss+','+@dwdz+','+@tel+','+@zczj+','+@rs+')'
set @sql='select * from tablename where name='+ @name
正于你上面使用的变量@tblname一样.
按二楼改了出现:以下错误
列名 'dwmc' 无效。
服务器: 消息 207,级别 16,状态 1,过程 process,行 6
列名 'jg' 无效。
服务器: 消息 207,级别 16,状态 1,过程 process,行 6
列名 'lxr' 无效。
服务器: 消息 207,级别 16,状态 1,过程 process,行 6
列名 'hy' 无效。
服务器: 消息 207,级别 16,状态 1,过程 process,行 6
列名 'jyfw' 无效。
服务器: 消息 207,级别 16,状态 1,过程 process,行 6
列名 'jj' 无效。
服务器: 消息 207,级别 16,状态 1,过程 process,行 6
列名 'zcrq' 无效。
服务器: 消息 207,级别 16,状态 1,过程 process,行 6
列名 'ss' 无效。
服务器: 消息 207,级别 16,状态 1,过程 process,行 6
列名 'dwdz' 无效。
服务器: 消息 207,级别 16,状态 1,过程 process,行 6
列名 'tel' 无效。
服务器: 消息 207,级别 16,状态 1,过程 process,行 6
列名 'zczj' 无效。
服务器: 消息 207,级别 16,状态 1,过程 process,行 6
列名 'rs' 无效。
CREATE PROCEDURE process
as
begin
declare @dwmc nvarchar(50),@jg nvarchar(50),@lxr nvarchar(50),@hy nvarchar(50),@jyfw nvarchar(100),@jj nvarchar(50),@zcrq nvarchar(50),@ss nvarchar(50),@dwdz nvarchar(100),@tel nvarchar(50),@zczj nvarchar(50),@rs nvarchar(50),@tblname nvarchar(50),@num int,@sql nvarchar(100)
declare cs_a cursor for select dwmc,jg,lxr,hy,jyfw,jj,zcrq,ss,dwdz,tel,zczj,rs from guang
open cs_a
---------------------------------------------------------------------
CREATE PROCEDURE process
as
begin
declare cs_a cursor for select dwmc,jg,lxr,hy,jyfw,jj,zcrq,ss,dwdz,tel,zczj,rs from guang
open cs_a
declare @dwmc nvarchar(50),@jg nvarchar(50),@lxr nvarchar(50),@hy nvarchar(50),@jyfw nvarchar(100),@jj nvarchar(50),@zcrq nvarchar(50),@ss nvarchar(50),@dwdz nvarchar(100),@tel nvarchar(50),@zczj nvarchar(50),@rs nvarchar(50),@tblname nvarchar(50),@num int,@sql nvarchar(100)
set @num=0
FETCH NEXT FROM cs_a INTO @dwmc,@jg,@lxr,@hy,@jyfw,@jj,@zcrq,@ss,@dwdz,@tel,@zczj,@rs
WHILE @@FETCH_STATUS = 0
BEGIN
if (len(@ss)>=6)
begin
set @tblname=left(@ss,4)
set @sql=N'insert into ['+ @tblname+'] (dwmc,jg,lxr,hy,jyfw,jj,zcrq,ss,dwdz,tel,zczj,rs) values (@dwmc,@jg,@lxr,@hy,@jyfw,@jj,@zcrq,@ss,@dwdz,@tel,@zczj,@rs)'
exec sp_executesql @sql,
N'@dwmc nvarchar(50),@jg nvarchar(50),@lxr nvarchar(50),@hy nvarchar(50),@jyfw nvarchar(100),@jj nvarchar(50),@zcrq nvarchar(50),@ss nvarchar(50),@dwdz nvarchar(100),@tel nvarchar(50),@zczj nvarchar(50),@rs nvarchar(50)',
@dwmc,@jg,@lxr,@hy,@jyfw,@jj,@zcrq,@ss,@dwdz,@tel,@zczj,@rs
set @num=@num+1
end
FETCH NEXT FROM cs_a INTO @dwmc,@jg,@lxr,@hy,@jyfw,@jj,@zcrq,@ss,@dwdz,@tel,@zczj,@rs
END
print @num
CLOSE cs_a
DEALLOCATE cs_a
end
GO
as
declare @dwmc nvarchar(50),@jg nvarchar(50),@lxr nvarchar(50),@hy nvarchar(50),@jyfw nvarchar(100),@jj nvarchar(50),@zcrq nvarchar(50),@ss nvarchar(50),@dwdz nvarchar(100),@tel nvarchar(50),@zczj nvarchar(50),@rs nvarchar(50),@tblname nvarchar(50),@num int,@sql nvarchar(1000)
begindeclare cs_a cursor for select dwmc,jg,lxr,hy,jyfw,jj,zcrq,ss,dwdz,tel,zczj,rs from guang
open cs_a
set @num=0
FETCH NEXT FROM cs_a INTO @dwmc,@jg,@lxr,@hy,@jyfw,@jj,@zcrq,@ss,@dwdz,@tel,@zczj,@rs
WHILE @@FETCH_STATUS = 0
BEGIN
if (len(@ss)>=6)
begin
set @tblname=left(@ss,4)
set @sql=N'insert into ['+ @tblname+'] (dwmc,jg,lxr,hy,jyfw,jj,zcrq,ss,dwdz,tel,zczj,rs) values ('+@dwmc+','+@jg+','+@lxr+','+@hy+','+@jyfw+','+@jj+','+@zcrq+','+@ss+','+@dwdz+','+@tel+','+@zczj+','+@rs+')' exec sp_executesql @sql
set @num=@num+1
end
FETCH NEXT FROM cs_a INTO @dwmc,@jg,@lxr,@hy,@jyfw,@jj,@zcrq,@ss,@dwdz,@tel,@zczj,@rs
END
print @num CLOSE cs_a
DEALLOCATE cs_a
end
GO