我具有以下函数,该函数在调用此字符串时返回以下结果集。
SELECT item
FROM dbo.DelimitedSplit8K('985B773F-5E36-47D4-9E84-E0CE35B34337,32237666-86F3-41FD-BCDE-794571CDAEA2',',')
结果集:
item
------------------------------------
985B773F-5E36-47D4-9E84-E0CE35B34337
32237666-86F3-41FD-BCDE-794571CDAEA2
现在,此功能的目的是获取两个或多个ID,因为我将把多个ID从我的C#程序传递给存储过程中的一个变量。
问题
问题似乎很简单,但是我不确定为什么会发生。
CREATE PROC [dbo].[usp_printMulitTest]
@multiApplicationId_FK uniqueidentifier = '',
@pDelimiter CHAR(1) = NULL
AS
;WITH image_CTE(imgBinary, imgCode, appID) AS
(
SELECT
[image], imageCode_FK, app
FROM
[dbo].Images
WHERE
CAST('985B773F-5E36-47D4-9E84-E0CE35B34337,32237666-86F3-41FD-BCDE-794571CDAEA2' AS UNIQUEIDENTIFIER)
IN ((SELECT item
FROM dbo.DelimitedSplit8K(CAST('985B773F-5E36-47D4-9E84-E0CE35B34337,32237666-86F3-41FD-BCDE-794571CDAEA2' AS UNIQUEIDENTIFIER),',')))
)
SELECT *
FROM image_CTE
当我对变量进行硬编码时,此存储过程可以正常工作。
但是,当我将其转换为此
WHERE CAST(app AS UNIQUEIDENTIFIER)
IN((SELECT item FROM dbo.DelimitedSplit8K(CAST(@multiApplicationId_FK AS UNIQUEIDENTIFIER),',' )))
要获取所传递的应用ID的结果,会出现错误
从字符串转换为uniqueidentifier时转换失败
在寻找解决方案时,指出的两个是唯一标识符的不正确格式,而不是使用强制转换,但是我检查了数字并使用了强制转换/转换,但没有变化。
感谢您的协助。