Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
web на asa
|
|||
|---|---|---|---|
|
#18+
Чего в супе не хватает? авторALTER PROCEDURE "DBA"."create_html"( in inName char(16) default 'tmp', in inQuery long varchar DEFAULT 'SELECT mesto.nomer as mn,kod_ceh_otd as rrt,abonent,adres from mesto where nomer=''52288''') BEGIN declare strVar long varchar; declare meQueryBegin long varchar; declare meQueryEnd long varchar; declare meFetch long varchar; declare meHeader long varchar; declare meString long varchar; declare meColumn char(25); declare meColumnAs char(25); declare meVar smallint; set meQueryEnd = 'select '; set meFetch = 'fetch next lider into '; set meHeader = 'set chtml=chtml+''<TR>'';\n'; set meString = ' set chtml=chtml+''<TR>'';\n'; set meQueryBegin = substr(inQuery,8); set strVar = 'CREATE PROCEDURE "DBA"."' + inName + '"()\n'; set strVar = strVar + 'result(chtml long varchar)\n'; set strVar = strVar + 'begin\n'; set strVar = strVar + 'declare chtml long varchar;\n'; set strVar = strVar + 'declare myQuery long varchar;\n'; while left(ltrim(meQueryBegin),4)<>'from' loop //Ищем запятые set meVar = locate(meQueryBegin,','); //Если не найдено - значит последняя колонка if meVar = 0 then set meVar = locate(meQueryBegin,' from'); end if; //Выделяем название колонки set meColumn = trim(substr(meQueryBegin,1,meVar-1)); set meQueryBegin = ltrim(substr(meQueryBegin,meVar+1)); //На случай точек и as set meVar = locate(meColumn,' as'); if meVar = 0 then set meColumnAs = replace(meColumn,'.','_'); else set meColumnAs = trim(substr(meColumn,meVar+4)); set meColumn = substr(meColumn,1,meVar-1); end if; //Преобразуем конечный запрос set meQueryEnd = meQueryEnd + 'string(' + meColumn +'), '; //Строим заголовок таблицы set meHeader = meHeader + 'set chtml=chtml+''<TH>' + meColumnAs + '</TH>'';\n'; //Образуем переменную для отображения set strVar = strVar + 'declare my_' + meColumnAs + ' char(64);\n'; //Добавляем эту переменную в fetch set meFetch = meFetch + 'my_' + meColumnAs + ','; //Строим строку таблицы set meString = meString + ' set chtml=chtml+''<TD>''+isnull(my_' + meColumnAs + ','' '')+''</TD>'';\n'; end loop; //Оформление конечного запроса (рубим последнюю запятую в meQueryEnd) set meQueryEnd = left(meQueryEnd,length(meQueryEnd)-2) + ' ' + meQueryBegin; set meQueryEnd = replace(meQueryEnd,'''',''''''); set meFetch = left(meFetch,length(meFetch)-1); set meString = meString + ' set chtml=chtml+''</TR>'';\n'; set strVar = strVar + 'set myQuery =''' + meQueryEnd +''';\n'; set strVar = strVar + '//call dba.html_head_c();\n'; set strVar = strVar + 'set chtml=''<html>'';\n'; set strVar = strVar + 'set chtml=''<head>'';\n'; set strVar = strVar + 'set chtml=chtml+''<TITLE>Скажите разработчику, что он забыл про заголовок</TITLE>'';\n'; set strVar = strVar + 'set chtml=chtml+''</head>'';\n'; set strVar = strVar + 'set chtml=chtml+''<body bgcolor="#C0C0C0">'';\n'; set strVar = strVar + 'set chtml=chtml+''<TABLE BORDER WIDTH=100%>'';\n'; set strVar = strVar + meHeader; set strVar = strVar + 'set chtml=chtml+''</TR>'';\n'; set strVar = strVar + 'begin\n'; set strVar = strVar + ' declare err_notfound exception for sqlstate value ''02000'';\n'; set strVar = strVar + ' declare lider dynamic scroll cursor using myQuery;\n'; set strVar = strVar + ' open lider;\n'; set strVar = strVar + ' liderLoop: loop \n'; set strVar = strVar + ' ' + meFetch + ';\n'; set strVar = strVar + ' if sqlstate = err_notfound then\n'; set strVar = strVar + ' leave liderLoop\n'; set strVar = strVar + ' end if;\n'; set strVar = strVar + meString; set strVar = strVar + ' end loop liderLoop;\n'; set strVar = strVar + ' close lider;\n'; set strVar = strVar + 'end;\n'; set strVar = strVar + 'set chtml=chtml+''</TABLE>'';\n'; set strVar = strVar + '//set chtml=chtml+rtrim(dba.html_notes(1));\n'; set strVar = strVar + 'set chtml=chtml+''</body>'';\n'; set strVar = strVar + 'set chtml=chtml+''</html>'';\n'; set strVar = strVar + 'select chtml;\n'; set strVar = strVar + 'end'; execute immediate strVar; END Генерируется результат авторALTER PROCEDURE "DBA"."tmp"() result(chtml long varchar) begin declare chtml long varchar; declare myQuery long varchar; declare my_mn char(64); declare my_rrt char(64); declare my_abonent char(64); declare my_adres char(64); set myQuery ='select string(mesto.nomer), string(kod_ceh_otd), string(abonent), string(adres) from mesto where nomer=''52288'''; //call dba.html_head_c(); set chtml='<html>'; set chtml='<head>'; set chtml=chtml+'<TITLE>Скажите разработчику, что он забыл про заголовок</TITLE>'; set chtml=chtml+'</head>'; set chtml=chtml+'<body bgcolor="#C0C0C0">'; set chtml=chtml+'<TABLE BORDER WIDTH=100%>'; set chtml=chtml+'<TR>'; set chtml=chtml+'<TH>mn</TH>'; set chtml=chtml+'<TH>rrt</TH>'; set chtml=chtml+'<TH>abonent</TH>'; set chtml=chtml+'<TH>adres</TH>'; set chtml=chtml+'</TR>'; begin declare err_notfound exception for sqlstate value '02000'; declare lider dynamic scroll cursor using myQuery; open lider; liderLoop: loop fetch next lider into my_mn,my_rrt,my_abonent,my_adres; if sqlstate = err_notfound then leave liderLoop end if; set chtml=chtml+'<TR>'; set chtml=chtml+'<TD>'+isnull(my_mn,' ')+'</TD>'; set chtml=chtml+'<TD>'+isnull(my_rrt,' ')+'</TD>'; set chtml=chtml+'<TD>'+isnull(my_abonent,' ')+'</TD>'; set chtml=chtml+'<TD>'+isnull(my_adres,' ')+'</TD>'; set chtml=chtml+'</TR>'; end loop liderLoop; close lider; end; set chtml=chtml+'</TABLE>'; //set chtml=chtml+rtrim(dba.html_notes(1)); set chtml=chtml+'</body>'; set chtml=chtml+'</html>'; select chtml; end Прикручиваем к web service и все... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2006, 12:02 |
|
||
|
web на asa
|
|||
|---|---|---|---|
|
#18+
В конце перед SELECT не хватает: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2006, 12:07 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=33543744&tid=2013072]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 216ms |
| total: | 372ms |

| 0 / 0 |
