Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
XML
|
|||
|---|---|---|---|
|
#18+
Литературы конечно уйма и internet и на бумаге. Я уже обчитался. Ну все знаю. Вот только никак понять не могу как же мне запрос к SQL из XML документа сделать??? Кто работал подскажите плиз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2001, 05:12 |
|
||
|
XML
|
|||
|---|---|---|---|
|
#18+
Ну если на сервере сделаны все установочные работы (IIS, web, configure SQL XML support on IIS), то я лично делаю так Пример выборки/поиска данных - задача по данным номеру клиента отобразить данные о его договорах двумя частями, сначала данные клиента, затем данные о каждом договоре. При отсутствии данных - отобразить соответсвующее сообщение. мой XML <?xml version ='1.0' encoding='UTF-8'?> <root xmlns:sql='urn:schemas-microsoft-com:xml-sql' sql:xsl='agreementsearch1.xsl'> <sql:header> <sql:param name='CustName'></sql:param> <sql:param name='CustRegNum'></sql:param> </sql:header> <sql:query > exec sp_agrsearches1 @CustName, @CustRegNum </sql:query> </root> Вместо вызова процедуры exec может стоять и прямой запрос SELECT, главное чтобы с фразой FOR XML + опции(в данном примере я использую AUTO, ELEMENTS) - это для извлечения данных. Для отображения я использую шаблоны (см.тэг sql:xsl='agreementsearch1.xsl') мой XSL <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:variable name="backcolor" select="'#FFFFCC'" /> <xsl:template match="a"> <TR><TD align="center"> <TABLE border='1' cellpadding="0" cellspacing="0"> <TR> <TH>Kliendi nimi</TH> <TH>IK/Reg.nr</TH> <TH>Võlg</TH> <TH>Staatus</TH> <TH>Seisuga</TH> </TR> <TR class="tabelisisu"> <xsl:apply-templates select='cust_name|cust_vat_reg_num|cust_balance|stage_name|last_run'/> </TR> </TABLE> </TD></TR> <TR class="tabelisisu"><TD align="center"> <TABLE border='1' cellpadding="0" cellspacing="0"> <TR> <TH>Number</TH> <TH>Kasutaja nimi</TH> <TH>Pakett</TH> <TH>St</TH> <TH>Sõlm.</TH> <TH>Lõpet.</TH> <TH>Põhjus</TH> <TH>Lisateenused</TH> </TR> <xsl:apply-templates select='c'/> </TABLE> </TD></TR> </xsl:template> <xsl:template match="a/cust_name"> <TD><xsl:apply-templates/></TD> </xsl:template> <xsl:template match="a/cust_vat_reg_num"> <TD><xsl:apply-templates/></TD> </xsl:template> <xsl:template match="a/cust_balance"> <TD align="right"><xsl:apply-templates/></TD> </xsl:template> <xsl:template match="a/stage_name"> <TD><xsl:apply-templates/></TD> </xsl:template> <xsl:template match="a/last_run"> <TD><xsl:apply-templates/></TD> </xsl:template> <xsl:template match="c"> <TR class="tabelisisu"> <xsl:apply-templates select='*'/> </TR> </xsl:template> <xsl:template match="c/subr_info_status"> </xsl:template> <xsl:template match="c/s23_disc_reason"> <TD><xsl:apply-templates/></TD> </xsl:template> <xsl:template match="c/s23_subscriber"> <TD><xsl:apply-templates/></TD> </xsl:template> <xsl:template match="c/subr_user_name"> <TD><xsl:apply-templates/></TD> </xsl:template> <xsl:template match="c/s23_at_code"> <TD><xsl:apply-templates/></TD> </xsl:template> <xsl:template match="c/s23_status"> <TD><b> <xsl:choose> <xsl:when test=". = 'A'"><font color="#006600"><xsl:value-of select="."/></font> </xsl:when> <xsl:when test=". = 'P'"><font color="#333333"><xsl:value-of select="."/></font></xsl:when> <xsl:when test=". = 'L'"><font color="#FF0000"><xsl:value-of select="."/></font></xsl:when> </xsl:choose> </b></TD> </xsl:template> <xsl:template match="c/subr_agdate"> <TD><xsl:apply-templates/></TD> </xsl:template> <xsl:template match="c/subr_sw_off"> <TD><xsl:apply-templates/></TD> </xsl:template> <xsl:template match="c/services"> <TD><xsl:apply-templates/></TD> </xsl:template> <xsl:template match="/"> <TABLE cellpadding="0" cellspacing="0"> <xsl:apply-templates/> </TABLE> </xsl:template> <xsl:template match="row"> <TR class="tabelisisu"> <TD align="center"><xsl:value-of select = '@error_message' /></TD> </TR> </xsl:template> </xsl:stylesheet> для запуска XML используется простая HTML страница для ввода пользователем параметров поиска.Данная страница форимирует ссылку вида 'http:// mywebserver / mytemplatedirectory /agreementsearch1.xml?CustRegNum=' +document.agreementsearch_main.custnumber.value+'&outputencoding=UTF-8&contenttype=text/html' Основной запрос выглядит так SELECT a.cust_name, a.cust_vat_reg_num, a.cust_balance, COALESCE(b.stage_name, '-') AS stage_name, COALESCE(CONVERT(varchar(10), CONVERT(datetime, a.last_run, 120), 4), '-') AS last_run, c.subr_info_status, CASE WHEN c.subr_info_status = 'A' THEN c.s23_subscriber ELSE 'salastatud' END AS s23_subscriber, CASE WHEN c.subr_info_status = 'A' THEN CASE WHEN DATALENGTH(RTRIM(LTRIM(c.subr_user_name)))=0 THEN '-' ELSE c.subr_user_name END ELSE 'salastatud' END AS subr_user_name, CASE WHEN c.subr_info_status = 'A' THEN CASE WHEN (dbo.fn_IsClosedAgr(a.cust_number, c.s23_disc_reason, c.s23_status) = 1) THEN COALESCE(dbo.fn_Packet4Agreement(a.cust_number, c.s23_subscriber, c.subr_sw_off, 1), '-' ) ELSE COALESCE(dbo.fn_Packet4Agreement(a.cust_number, c.s23_subscriber, DATEADD(yy, CASE WHEN c.s23_status='00' THEN -100 ELSE 0 END, GETDATE()), 1), '-') END ELSE 'salastatud' END AS s23_at_code , CASE WHEN c.s23_status IN('10', '50') THEN 'A' WHEN (dbo.fn_IsClosedAgr(a.cust_number, c.s23_disc_reason, c.s23_status) = 1) THEN 'L' ELSE 'P' END AS s23_status, CONVERT(varchar(10), CONVERT(datetime, c.subr_agdate, 120), 4) AS subr_agdate, COALESCE(CONVERT(varchar(10), CONVERT(datetime, c.subr_sw_off, 120), 4), '-') AS subr_sw_off, CASE WHEN DATALENGTH(RTRIM(LTRIM(c.s23_disc_reason)))=0 THEN '-' ELSE c.s23_disc_reason END AS s23_disc_reason, CASE WHEN c.subr_info_status = 'A' THEN COALESCE(CASE WHEN (dbo.fn_IsClosedAgr(a.cust_number, c.s23_disc_reason, c.s23_status) = 1) THEN dbo.fn_Services4Customer(a.cust_number, c.s23_subscriber, c.subr_sw_off) ELSE dbo.fn_Services4Customer(a.cust_number, c.s23_subscriber, GETDATE()) END, '-') ELSE 'salastatud' END AS services FROM dbo.customers a LEFT OUTER JOIN dbo.customerstages b ON b.stage = a.stage LEFT OUTER JOIN dbo.liitumised c ON c.cust_number = a.cust_number LEFT OUTER JOIN dbo.disconnectionreasons d ON d.s23_disc_reason = c.s23_disc_reason WHERE (a.cust_vat_reg_num = @customer_regnum) ORDER BY cust_name FOR XML AUTO, ELEMENTS Не знаю помог ли я вам или наоборот еще больше запутал - данные тексты появились в результатет многочисленных эксперементов, так что может оказаться, что они и неоптимальны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2001, 07:18 |
|
||
|
XML
|
|||
|---|---|---|---|
|
#18+
http://www.sql.ru/docs/AccessingData/XML/NET/index.shtml Может тоже сгодится... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2001, 15:07 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=3550&tid=1825720]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
32ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 255ms |
| total: | 370ms |

| 0 / 0 |
