Мне нужно вставить столбец в хранимую процедуру, которая считывает XML в качестве входных данных и считывает значение XML с помощью XQuery в SQL Server.
Рассмотрим таблицу dbo.emailDetails
Create Table dbo.emailDetails
(
EmailId int,
HomeEmail varchar(250),
);
XML-файл:
<EmailDetails xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<EmailId>1</EmailId>
<HomeEmail>[email protected]</HomeEmail>
</EmailDetails>
Хранимая процедура SQL Server:
CREATE PROCEDURE [apply].[UpdateEmailDetails]
@EmailDetails XML
(DOCUMENT [dbo].[EmailDetails])
AS
BEGIN
DECLARE @EmailId INT, @HomeEmail NVARCHAR(250)
SET @HomeEmail = @EmailDetails.value(N'(//EmailDetails/HomeEmail)[1]',N'NVARCHAR(255)');
SET @EmailId = @EmailDetails.value(N'(//EmailDetails/EmailID)[1]',N'INT');
INSERT INTO dbo.emails (emailid, homeemail)
VALUES (@EmailId, @HomeEmail )
END
Теперь я хотел бы включить IsConfirmed
в указанную выше хранимую процедуру.
alter table dbo.Emaildetails
add IsConfirmed bit not null default 0
----- Executed successfully and added the new column in the table.
Пока я пробовал следующие изменения в хранимой процедуре:
Declare @IsConfirmed bit
SET @IsConfirmed = @EmailDetails.value(N'(//EmailDetails/IsConfirmed)[1]',N'BIT');
и получил ошибку:
XQuery [value ()]: нет элемента с именем «IsConfirmed» в типе «element (EmailDetails, # anonymous) *».
Может ли кто-нибудь помочь мне с этим?
Пожалуйста, дайте мне знать, если потребуется дополнительная информация.
С уважением, Висва В.