不允许从数据类型xml到nvarchar的隐式转换。使用CONVERT函数运行此查询

时间:2013-06-25 07:16:08

标签: stored-procedures sql-server-2008-r2

我正在编写以下SQL过程:

ALTER PROCEDURE [dbo].[spc_InsertSubjectToContentRelation]
(
    @pCourseGUID XML, 
    @pSubjectId XML,
    @pAssessmentIds XML,
    @pVideoIds XML
)
AS
BEGIN
SET NOCOUNT ON;

    DECLARE @CourseGUID NVARCHAR(50);
    DECLARE @SubjectId NVARCHAR(50);
    DECLARE @AssessmentIds NVARCHAR(MAX);
    DECLARE @VideoIds NVARCHAR(MAX);

    SET @CourseGUID = Convert(NVARCHAR,@pCourseGUID);
    SET @SubjectId = Convert(NVARCHAR,@pSubjectId);
    SET @AssessmentIds = Convert(NVARCHAR,@pAssessmentIds);
    SET @VideoIds = Convert(NVARCHAR,@pVideoIds);

    INSERT INTO SubjectToAssessmentAndVideoRelation VALUES (@pCourseGUID, @pAssessmentIds, @pAssessmentIds, @pVideoIds)
END

当我运行此程序时,我收到错误:

  

不允许从数据类型xml到nvarchar的隐式转换。使用CONVERT函数运行此查询。   我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您运行转换,然后忽略转换后的值并继续使用原始参数值。你可能想要这个:

INSERT INTO SubjectToAssessmentAndVideoRelation VALUES (
     @CourseGUID, @AssessmentIds, @AssessmentIds, @VideoIds)

p之后的@,因此使用局部变量而不是参数

但是,如果您希望xml参数立即将其转换为nvarchar,那么我仍然会为您宣布您的过程需要{{1}}。