2013-06-25 73 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

相關問題