27,579
社区成员
发帖
与我相关
我的任务
分享
--帮你加个SQL code 方便大家,
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
ALTER PROCEDURE PROC_MU
(@STR1 VARCHAR(8000), @STR2 VARCHAR(8000), @FIRSTNAME VARCHAR(50),@COLNAME1 VARCHAR(50),@COLNAME2 VARCHAR(50),@COLNAME3 VARCHAR(50),@COLNAME4 VARCHAR(50))
AS
BEGIN
DECLARE @TBNAME1 VARCHAR(50) --用于变动表名
DECLARE @TBNAME2 VARCHAR(50) --第1个字段插入的值
DECLARE @TBNAME3 VARCHAR(50) --第2个字段插入的值
DECLARE @TBNAME4 VARCHAR(50) --第3个字段插入的值
DECLARE @TBNAME5 VARCHAR(50) --第4个字段插入的值
DECLARE @TBNAME6 VARCHAR(50) --第5个字段插入的值
--SELECT @STR='1,2,3',@FIRSTNAME='A',@COLNAME='COL1'
--BEGIN INSERT
SELECT @STR1=RTRIM(@STR1)+',' --给SRT1赋初值
SELECT @STR2=RTRIM(@STR2)+',' --给SRT1赋初值
WHILE CHARINDEX(',',@STR1)>0
BEGIN
SELECT @TBNAME1=LEFT(@STR1,CHARINDEX(',',@STR1)-1),@STR1=STUFF(@STR1,1,CHARINDEX(',',@STR1),'') --给变量的表名赋值,@STR1分割一次后,再赋值
SELECT @TBNAME2=LEFT(@STR2,CHARINDEX(',',@STR2)-1),@STR2=STUFF(@STR2,1,CHARINDEX(',',@STR2),'') --给要插入的第1个字段赋值,@STR2分割一次后,再赋值
SELECT @TBNAME3=LEFT(@STR2,CHARINDEX(',',@STR2)-1),@STR2=STUFF(@STR2,1,CHARINDEX(',',@STR2),'') --给要插入的第2个字段赋值,@STR2分割一次后,再赋值
SELECT @TBNAME4=LEFT(@STR2,CHARINDEX(',',@STR2)-1),@STR2=STUFF(@STR2,1,CHARINDEX(',',@STR2),'') --给要插入的第3个字段赋值,@STR2分割一次后,再赋值
SELECT @TBNAME5=LEFT(@STR2,CHARINDEX(',',@STR2)-1),@STR2=STUFF(@STR2,1,CHARINDEX(',',@STR2),'') ---给要插入的第4个字段赋值,@STR2分割一次后,再赋值
@TBNAME6=LEFT(@STR2,CHARINDEX(',',@STR2)-1),@STR2=STUFF(@STR2,1,CHARINDEX(',',@STR2),'') ---给要插入的第5个字段赋值,@STR2分割一次后,再赋值
EXEC('INSERT INTO '+@FIRSTNAME+@TBNAME1+'('+@COLNAME1+','+@COLNAME2+','+@COLNAME3+','+@COLNAME4+') SELECT '''+@TBNAME2+''', '''+@TBNAME3+''', '''+@TBNAME4+''', '''+@TBNAME5+''', '''+@TBNAME6+'''') --向相应的表内写入值
END
END
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO