gpt4 book ai didi

c++ - 将数组绑定(bind)到sql参数

转载 作者:行者123 更新时间:2023-11-28 06:07:51 25 4
gpt4 key购买 nike

有什么方法可以将在 C++ 中生成的数组绑定(bind)到 SQL 语句中的参数。像这样:

insert into Table1(COLUMN1, COLUMN2, COLUMN3, datum) values (:1,:2,:3,:4)

本例中:1:2:3:4为数组参数。

我知道 Table Variable 是个好主意,但我想使用另一种方法

最佳答案

使用 Xantos 给出的建议,将您的数组以分隔字符串的形式传递到存储过程中。然后,您可以在表值函数中使用分隔字符串。

ALTER FUNCTION [dbo].[String_To_Int_Table]
(
@list NVARCHAR(1024)
, @delimiter NCHAR(1) = ',' --Defaults to CSV
)
RETURNS
@tableList TABLE(
value INT
)
AS

BEGIN
DECLARE @value NVARCHAR(11)
DECLARE @position INT

SET @list = LTRIM(RTRIM(@list))+ ','
SET @position = CHARINDEX(@delimiter, @list, 1)

IF REPLACE(@list, @delimiter, '') <> ''
BEGIN
WHILE @position > 0
BEGIN
SET @value = LTRIM(RTRIM(LEFT(@list, @position - 1)));
INSERT INTO @tableList (value)
VALUES (cast(@value as int));
SET @list = RIGHT(@list, LEN(@list) - @position);
SET @position = CHARINDEX(@delimiter, @list, 1);

END
END
RETURN
END

然后您可以使用表格功能来填充其他表格...

-- check to see if contacts were included...
if len(ltrim(rtrim(@Contacts)))> 0
begin
--create a temp table to hold the list of ids
CREATE TABLE #TmpContacts (ID INT);

-- use the table valued function to parse the ids into a table.
INSERT INTO #TmpContacts(ID)
SELECT Value FROM dbo.String_to_int_table(@Contacts, ',');

-- Select the @InterfaceID and the parsed ContactTypeIDs
-- for a bulk insert into the relational table...
INSERT INTO [InterfaceContacts]
([InterfaceID]
,[ContactID]
,[Created]
,[CreatedBy])
Select @InterfaceID, T.ID, CURRENT_TIMESTAMP, sUser_sName()
FROM #TmpContacts T;

drop table #TmpContacts;
end

关于c++ - 将数组绑定(bind)到sql参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32006526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com