2013-06-25 69 views
1

我写下面的SQL过程:不允许将数据类型xml隐式转换为nvarchar。使用CONVERT函数来运行此查询

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 

当我运行这个程序,我发现了错误:

Implicit conversion from data type xml to nvarchar is not allowed. Use the CONVERT function to run this query. How can I resolve this?

+0

为什么要将参数声明为一种类型,如果这不是您的过程需要的类型? –

+0

@Damien_The_Unbeliever,因为表中列的类型不是xml类型 – Jaguar

回答

1

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

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

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

但我继续为什么你申报你的程序想要xml参数要迷惑如果它立即将它们转换为nvarchar s。

+0

谢谢:),它工作 – Jaguar

相关问题