我正在编写以下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函数运行此查询。 我该如何解决这个问题?
答案 0 :(得分:1)
您运行转换,然后忽略转换后的值并继续使用原始参数值。你可能想要这个:
INSERT INTO SubjectToAssessmentAndVideoRelation VALUES (
@CourseGUID, @AssessmentIds, @AssessmentIds, @VideoIds)
(p
之后的@
,因此使用局部变量而不是参数
但是,如果您希望xml
参数立即将其转换为nvarchar
,那么我仍然会为您宣布您的过程需要{{1}}。