这里我想将每个值的完整字符串插入一列。为此,我编写了以下脚本:
示例:
表:测试
create table test
(
cola varchar(10),
colb varchar(max),
colc varchar(10)
);
注意:现在我想通过调用存储过程插入如下记录:
cola colb colc
------------------
X1 M1 Z1
X1 M2 Z1
X1 M3 Z1
X1 M4 Z1
存储过程:sptest
CREATE PROC sptest
@cola varchar(10),
@colb varchar(max),
@colc varchar(10)
AS
Declare @dynamic varchar(max)
SET @dynamic =N'delete from test where colc='''+ @colc +'''';
PRINT(@dynamic)
EXEC(@dynamic)
SET @dynamic =N'insert into test values('''+@cola+''','''+@colb+''','''+@colc+''')';
PRINT(@dynamic)
EXEC(@dynamic)
GO
注意:首先,我需要通过检查colc
值来删除记录,然后插入记录。
调用函数:
EXEC sptest
@cola = 'X1',
@colb = 'M1,M2,M3,M4',
@colc = 'Z1'
注意:在上面显示的调用函数中,必须插入colb
值,如上表所示。我没有得到如何在column colb
。
答案 0 :(得分:1)
SQL没有任何机制可以自动将逗号分隔值字符串(您的@colb
- 变量)拆分为多个插入。您需要编写一些代码来自行拆分。
基本上,你应该这样做:
CHARINDEX
确定,
中下一个@colb
的位置。将此位置存储在变量中。SUBSTRING
仅检索从@colb
到(1)中存储的位置的字符。INSERT
,@cola
和您在(2)中提取的值调用@colc
。,
。