如何傳遞通過分離這兩個值組合/作爲參數值存儲過程:存儲過程的參數
"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帳戶登錄。 –