所以,我有这个存储过程(让我们称之为SP1
)作为参数获取两个字符串(比如string1和string2)
但是,我需要从我的代码中调用这个存储过程,所以为了让事情变得更快,我正在考虑批量完成它。将所有参数收集到某种集合中,然后发送。
根据我的理解,我需要在代码端使用DataTable
,并在SQL Server端使用自定义表类型 - 好吧,很酷。但是......现在是什么?
但是......我怎么从那里到达我实际去的地方
EXEC SP1 string1, string2 or something along those lines?
答案 0 :(得分:0)
创建表格类型
CREATE TYPE Strings AS TABLE ( String1 VARCHAR(50), String2 VARCHAR(50) )
更改您的程序以接受表格类型作为输入
ALTER PROCEDURE Usp_procname (@strings STRINGS Readonly)
AS
..
调用程序
DECLARE @strings STRINGS
INSERT INTO @strings
(String1,String2)
SELECT 'String1','String2'
UNION ALL
SELECT 'String3','String4'
UNION ALL
SELECT 'String5','String6'
EXEC Usp_procname @strings
通过这种方式,您可以在一次调用中传递多个字符串。确保更新过程中的逻辑以处理多个字符串
答案 1 :(得分:0)
不确定这是否是您想要实现的,而不是解析这两个字符串参数,您想获得一个包含所有字符串行的表吗?
如果是这样,您可以在SP中使用UDF
,
点击此处:
CREATE FUNCTION [dbo].[Name]
(
@parameter
)
RETURNS @Table TABLE
(
col1 varchar(50),
col2 varchar(50)
)
AS
BEGIN
**the query that inserts each records to TABLE**
END
然后在SP中使用此[Name]
UDF
答案 2 :(得分:0)
在像这样的情况下,我通常连接字符串并在服务器端拆分它们,或者如果我有多个列就传递一个xml。 Sql处理xml时速度非常快。您可以尝试所有方法并检查处理时间,然后选择最佳方法。