如何传递通过分离这两个值组合/作为参数值存储过程:存储过程的参数
"8033301552*" OR "08033301552*"
或
"Taiwo*" AND "Ayedun*"
我的意思是,我需要创建一个字符串和把它作为参数传递?
如何传递通过分离这两个值组合/作为参数值存储过程:存储过程的参数
"8033301552*" OR "08033301552*"
或
"Taiwo*" AND "Ayedun*"
我的意思是,我需要创建一个字符串和把它作为参数传递?
正式不支持。
一种解决方法可以在
发现什么不工作有没有真正做到与RS,但与在SQL Server存储过程 做。您无法在存储过程中执行以下操作。 比方说,你有一个名为@MyParams 现在您可以在参数映射到多值参数,参数,但如果在你的 存储过程,你尝试这样做: SELECT * FROM sometable其中(@MyParams)somefield 它将无法工作。尝试一下。创建一个存储过程并尝试将多值参数传递给存储过程。它不会工作。 您可以执行的操作是将字符串参数作为多值 参数传递,然后将该字符串更改为表格。 这种技术是通过SQL Server MVP告诉我的,Erland Sommarskog 例如我已经完成了这个 内部连接charlist_to_table(@ STO,默认)f on b.sto = f.str 所以请注意这不是RS的问题,这严格是存储过程 问题。 下面是函数:
CREATE FUNCTION charlist_to_table
(@list ntext,
@delimiter nchar(1) = N',')
RETURNS @tbl TABLE (listpos int IDENTITY(1, 1) NOT NULL,
str varchar(4000),
nstr nvarchar(2000)) AS
BEGIN
DECLARE @pos int,
@textpos int,
@chunklen smallint,
@tmpstr nvarchar(4000),
@leftover nvarchar(4000),
@tmpval nvarchar(4000)
SET @textpos = 1
SET @leftover = ''
WHILE @textpos <= datalength(@list)/2
BEGIN
SET @chunklen = 4000 - datalength(@leftover)/2
SET @tmpstr = @leftover + substring(@list, @textpos, @chunklen)
SET @textpos = @textpos + @chunklen
SET @pos = charindex(@delimiter, @tmpstr)
WHILE @pos > 0
BEGIN
SET @tmpval = ltrim(rtrim(left(@tmpstr, @pos - 1)))
INSERT @tbl (str, nstr) VALUES(@tmpval, @tmpval)
SET @tmpstr = substring(@tmpstr, @pos + 1, len(@tmpstr))
SET @pos = charindex(@delimiter, @tmpstr)
END
SET @leftover = @tmpstr
END
INSERT @tbl(str, nstr) VALUES (ltrim(rtrim(@leftover)),
ltrim(rtrim(@leftover)))
RETURN
END
GO
- 布鲁斯Loehle - 康格 MVP SQL Server报表服务 “罗兰·缪勒”在信息中写道
可以传递值的数组到一个存储过程中使用XML数据。我发现这是一个可行的解决方案,并解决了可能受SQL注入影响的动态SQL问题。
查看this link了解如何操作的基本示例。正如作者所言,这对某些解决方案来说可能是过度的,但我认为它很整齐,可以修改以满足您的要求。
您可以发布变通办法的要点吗?该链接要求我使用Google帐户登录。 –