2

我正在编写以下 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 函数运行此查询。我该如何解决这个问题?

4

1 回答 1

1

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

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

p在 之后没有@,因此使用局部变量而不是参数)

xml但是我仍然很困惑,如果它会立即将它们转换为nvarchars ,为什么你声明你的过程需要参数。

于 2013-06-25T07:30:25.460 回答