Použítí sql:variable v xml query   zodpovězená otázka

SQL

Dobrý den. Měl bych dotaz jestli někdo náhodou neví jakým způsobem se dá použít sql:variable v xml query. Popř. jakým jiným způsobem by to šlo udělat.

Jde o to, že mám vytvořenou SQL funkci, která mi z xml vytáhne text v určité řeči.

DECLARE @XML xml = '<xml>
		     <cz-CZ>Text CZ</cz-CZ>
		     <de-DE>Text DE</de-DE>
  		     <en-EN>Text EN</en-EN>
		   </xml>'
		, @DATA nvarchar(7) = '//cz-CZ'

select @XML.query('data(//cz-CZ)')
--result 'Text CZ' - Ok
select @XML.query('data(sql:variable("@DATA"))')
--result '//cz-CZ' - Wrong

Možnost složení celého selectu jako stringu a následné zavolání execute nepřipadá v úvahu, jde o SQL funcki a tam nelze execute zavolat.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Mám pocit, že rozšíření XPath pro SQL Server nedokáže proměnné využívat v dotazech, ale jen jako hodnota. Takže toto bohužel nepůjde.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak mně to stálo cca 1 den.

Řešení

DECLARE @XML xml = 
'<xml>
  <de-DE>Text DE</de-DE>
  <en-EN>Text EN</en-EN>
  <en-GB>Text GB</en-GB>
  <pt-PT>Text PT</pt-PT>
</xml>'
, @VAR NVARCHAR(20) = 'de-DE'

SELECT @XML.query('data(//*[local-name()=sql:variable("@VAR")])')
nahlásit spamnahlásit spam 0 odpovědětodpovědět

Velmi užitečné. Škoda, že to nelze použít jako celý výraz.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback