У меня есть журнала таблица имеет столбец XML, который содержит содержимое журналаXQuery с динамической XPath из столбца XML Sql сервера
Существует также таблица называется LOGTYPE, который является типом журнала
мне нужно для создания запроса descripes содержимого XML в читаемой строке
Я добавил колонку с именем logXPath в LOGTYPE таблицы
и IC reated следующий запрос
SELECT contents.value(LogXPath, 'nvarchar(max)')
FROM dbo.Log
JOIN dbo.LogType ON dbo.Log.logTypeID = dbo.LogType.logTypeID
и я получил следующее сообщение об ошибке
Аргумент 1 метода типа данных XML «значение» должно быть строковым
и я искал способ сделать это без каких-либо результатов!
Есть ли какой-нибудь динамический xpath в столбце XML XML-столбца Sql?
Редактировать
, например, предположить следующую схему и данные
CREATE TABLE [dbo].[logType]
(
[logTypeID] [int] NOT NULL ,
[logTypeName] [nvarchar](50) NOT NULL ,
[xPath] [nvarchar](MAX) NOT NULL ,
CONSTRAINT [PK_logType] PRIMARY KEY CLUSTERED ([logTypeID] ASC)
)
GO
INSERT [dbo].[logType]
([logTypeID] ,
[logTypeName] ,
[xPath]
)
VALUES (1 ,
N'Patient Data' ,
N'(/Patient/PatientName)[1]'
)
INSERT [dbo].[logType]
([logTypeID] ,
[logTypeName] ,
[xPath]
)
VALUES (2 ,
N'Clinic Data' ,
N'(/Clinic/ClinicName)[1]'
)
/****** Object: Table [dbo].[log] Script Date: 02/04/2015 13:58:47 ******/
GO
CREATE TABLE [dbo].[log]
(
[logID] [int] NOT NULL ,
[logTypeID] [int] NOT NULL ,
[Contents] [xml] NULL ,
CONSTRAINT [PK_log] PRIMARY KEY CLUSTERED ([logID] ASC)
)
GO
INSERT [dbo].[log]
([logID] ,
[logTypeID] ,
[Contents]
)
VALUES (1 ,
1 ,
N'<Patient><PatientID>1</PatientID><PatientName>john</PatientName></Patient>'
)
INSERT [dbo].[log]
([logID] ,
[logTypeID] ,
[Contents]
)
VALUES (2 ,
2 ,
N'<Clinic><ClinicID>1</ClinicID><ClinicName>Clinic 1</ClinicName></Clinic>'
)
Когда я сделать запрос как следующий, он дает мне ошибку
SELECT logTypeName ,
[Contents].value(dbo.logType.xPath, 'nvarchar(max)') AS data
FROM dbo.[log]
JOIN dbo.logType ON dbo.[log].logTypeID = dbo.logType.logTypeID
Как насчет выполнения всего оператора SELECT как динамического SQL? –
проблема заключается в том, что моя xpath не может быть переменной, которую она хранит в столбце sql и имеет различное значение для каждого типа журналов, а структура xml отличается для каждого типа журнала , поэтому, если я хочу использовать динамический sql, мне нужно создать запрос для каждый logtype, но мне нужно получить то в одном запросе – user897645
, пожалуйста, дайте образцы данных. поэтому мы проверяем. – Ajay2707