Я пытаюсь работать с файлами .rdl для извлечения определенной информации. Я попробовал это и получаю нулевое значение в результате и не могу понять это. Новое в xml Вот T Sql:
DECLARE @xml xml SET @xml= '<?xml version="1.0" encoding="utf-8"?> <Report xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner" xmlns:cl="http://schemas.microsoft.com/sqlserver/reporting/2010/01/componentdefinition" xmlns="http://schemas.microsoft.com/sqlserver/reporting/2010/01/reportdefinition"> <DataSets> <DataSet> <Query> <DataSourceName>SyteLine</DataSourceName> <CommandType>StoredProcedure</CommandType> <CommandText>ItemABCAnalysisSp</CommandText> </Query> </DataSet> </DataSets> </Report>' DECLARE @Value nvarchar(100) SELECT @xml.value('(/rd:Report/DataSets/DataSet/Query/CommandType)[1]', 'nvarchar(100)' )
Необходимо указать пространство имен по умолчанию.
SQL
DECLARE @xml xml = '<?xml version="1.0" encoding="utf-8"?> <Report xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner" xmlns:cl="http://schemas.microsoft.com/sqlserver/reporting/2010/01/componentdefinition" xmlns="http://schemas.microsoft.com/sqlserver/reporting/2010/01/reportdefinition"> <DataSets> <DataSet> <Query> <DataSourceName>SyteLine</DataSourceName> <CommandType>StoredProcedure</CommandType> <CommandText>ItemABCAnalysisSp</CommandText> </Query> </DataSet> </DataSets> </Report>'; ;WITH XMLNAMESPACES (DEFAULT 'http://schemas.microsoft.com/sqlserver/reporting/2010/01/reportdefinition') SELECT @xml.value('(/Report/DataSets/DataSet/Query/CommandType/text())[1]', 'NVARCHAR(100)') AS [CommandType];
Вывод
+-----------------+ | CommandType | +-----------------+ | StoredProcedure | +-----------------+