转换失败:从字符串转换为uniqueidentifier

时间:2018-07-12 16:18:02

标签: sql sql-server-2008 tsql

我具有以下函数,该函数在调用此字符串时返回以下结果集。

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时转换失败

在寻找解决方案时,指出的两个是唯一标识符的不正确格式,而不是使用强制转换,但是我检查了数字并使用了强制转换/转换,但没有变化。

感谢您的协助。

0 个答案:

没有答案