2017-06-06 42 views
1

我有这个存储过程:存储的数据从存储过程中设置 - 执行SQL任务

Dbo.SprocName (@Id UNIQUEIDENTIFIER, 
       @ResponseCode INT OUTPUT, 
       @ResponseDescription VARCHAR(500) OUTPUT) 

,并返回一个名为数据集说Resultnvarchar(MAX)(总是单行)。

我试过OLE和ADO连接以及结果集。我试过创建一个表变量并将值存储在那里。

没有用。

我可以在数据库中看到它正在成功运行,然后在返回结果数据集时失败。

我已经做了一些调试,我可以确保结果字符串返回应该是。问题是我不知道如何在SSIS上处理这个问题。

,我得到的错误是:

输入字符串的不正确的格式

我明白任何想法。

谢谢。

编辑:我试过再次使用表变量,它的工作原理。我想我第一次做得不好。对于那个很抱歉。谢谢!

回答

1

您的问题的一个潜在原因可能是SSIS和SQL Server之间的数据类型不匹配。

SSIS GUID数据类型与SQL Server不匹配uniqueidentifier - SSIS GUID具有大括号(例如,{00000000-0000-0000-0000-000000000000}),而SQL值不包含。 SQL无法将该值识别为唯一标识符,并且无法转换。

要传递一个GUID,您需要在SSIS或SQL中删除这些大括号。一种方法,我用它作为VARCHAR发送它,然后去掉花括号,例如,

DECLARE @GUID VARCHAR(40) = '{00000000-0000-0000-0000-000000000000}' 
DECLARE @CnvtGUID UNIQUEIDENTIFIER = REPLACE(REPLACE(@GUID, '}', ''), '{', '') 

SELECT @GUID, @CnvtGUID 
+0

谢谢你,但过程是返回nvarchar,变量是字符串。我不认为数据类型是问题,而是捕获数据集的方式。我也尝试修改数据类型。 – Maria

+0

您是否将值传递给'@ ID'参数?这是'uniqueidentifier'数据类型,它促使我看到我的建议 – AHiggins

+0

。存储过程正在执行,所以输入参数不是问题。我已经使用了一个表格变量来存储我的数据集,所以现在没问题。非常感谢您的帮助。 – Maria