Hello I have procedure like below
USE [DB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[AdminTestSaveAnswer]
@refQuestion xml
AS
BEGIN
SET NOCOUNT ON;
SELECT
Tbl.Col.value('@Id', 'int'),
Tbl.Col.value('@Question', 'varchar(max)'),
Tbl.Col.value('@CorrectAnswer', 'varchar(7)'),
Tbl.Col.value('@Desc', 'varchar(max)')
FROM @refQuestion.nodes('//Root') Tbl(Col)
END
I run code like
EXEC [dbo].[SP_AdminTestSaveAnswer] '<Root>
<Id>2</Id>
<Question>(I) Yaşayan sanatçılara televizyonlarda pek yer verilmiyor. (II) Bunların içerisinde sürekli olarak ekranda olan tek sanatçı neredeyse Attila İlhan. (III) Demek ki ülkemizde edebiyatçılara, şairlere, romancılara, öykü ve deneme ustalarına ihtiyaç duyulmuyor artık. (III) Şahsen ben 1996’dan beri televizyonlarda anımsanmıyor, oralara çağrılmıyorum. (V) Diğer pek çok yazarın da akla geldiğini, zaman zaman da olsa ekrana davet edildiklerini sanmıyorum.
</br><span><b>
Bu parçadaki numaralanmış cümlelerin hangisinde bir çıkarım söz konusudur?</b></span></Question>
<CorrectAnswer>A</CorrectAnswer>
<Desc>deded</Desc>
<refTest>1</refTest>
<Answers>
<Id>2</Id>
<Answer>I.</Answer>
<Code>A</Code>
<refQuestion>0</refQuestion>
</Answers>
<Answers>
<Id>3</Id>
<Answer>II.</Answer>
<Code>B</Code>
<refQuestion>0</refQuestion>
</Answers>
<Answers>
<Id>4</Id>
<Answer>III.</Answer>
<Code>C</Code>
<refQuestion>0</refQuestion>
</Answers>
<Answers>
<Id>5</Id>
<Answer>IV.</Answer>
<Code>D</Code>
<refQuestion>0</refQuestion>
</Answers>
<Answers>
<Id>6</Id>
<Answer>V.</Answer>
<Code>E</Code>
<refQuestion>0</refQuestion>
</Answers>
</Root>'
As result I get one row but all of columns are null. Where is my missing ?
Thanks in advance
sp_prefix is reserved by Microsoft and should not be used for User Procedures. Doing so has multiple implications, including performance and reliability.@Idwould reference the propertyIdnot the Node; you want(/Id/text())[1]. Also//Rootshould be/Root