Всякие мелочи по Oracle
Хранимка с функциями для работы с физ.лицами
Хранимка с функциями для отчетности по физ.лицам
/*Проверка - перестройка всех таблиц схемы*/
--prompt
Analize Tables
declare
cursor c_tables is select table_name
from user_all_tables;
begin
for a in c_tables
loop
execute immediate
'Analyze Table ' || user || '.' || a.table_name || '
Estimate Statistics Sample 33 Percent';
end loop;
end;
/*проверка версии
таблиц оракл*/
select * from dba_registry
/*восстановление сиквенсов*/
call rsb_ainc.restore_all_seq ();
/*обновление схемы на новый патч оракл*/
1. shutdown
2.
Startup migrate
3. spool patch.log
4. @catpatch.sql (found in the Oracle_Home
dbms\admin
directory).
5. spool off
6.
Review the patch.log file for errors and re-run the catpatch script after correcting any problems
7. shutdown
/*запуск sqlplus с установкой дос кодировки*/
set nls_lang=russian_cis.ru8pc866
sqlplus.exe
/nolog
connect sys@sys/tns as sysdba
/*Вставка даты в поле raw*/
update dnotetext_dbt set T_text=
dbms_lob.substr(utl_raw.cast_from_binary_integer(3),1,4) ||
dbms_lob.substr(utl_raw.cast_from_binary_integer(4),1,4)
||
utl_raw.reverse(utl_raw.cast_from_binary_integer(2007))
where t_documentid like '%1025371%'
/*Выборка даты из поля
raw*/
select to_date(utl_raw.cast_to_binary_integer(substr(T_text,1,2)) || '-' ||
utl_raw.cast_to_binary_integer(substr(T_text,3,2))
|| '-' ||
utl_raw.cast_to_binary_integer(utl_raw.reverse(substr(t_text,5,4))), 'DD-MM-YYYY') dat
from dnotetext_dbt where t_documentid
like '%1025371%'
/*
просмотр XML-документа средствами PL/SQL
*/
declare
p xmlparser.Parser;
doc xmldom.DOMDocument;
nodes xmldom.DOMNodeList;
one_node xmldom.DOMNode;
one_element xmldom.DOMElement;
value_node xmldom.DOMNode;
begin
p := xmlparser.newParser;
--xmlparser.parse(p,'http://www.cbr.ru/scripts/XML_val.asp?d=0');
xmlparser.parse(p,'http://gempel.sib.r-style.ru/XML_val.asp');
--xmlparser.parse(p,'/XML_val.xml');
doc := xmlparser.getDocument (p);
nodes := xmldom.getElementsByTagName (doc, '*');
FOR node_index IN 0 .. xmldom.getLength (nodes) - 1 LOOP
one_node := xmldom.item (nodes, node_index);
/*Выводим название елемента*/
one_element := xmldom.makeElement (one_node);
DBMS_OUTPUT.put_line
('Element: ' || xmldom.getTagName (one_element));
/*Выводим значение елемента*/
value_node := xmldom.getFirstChild (one_node);
DBMS_OUTPUT.put_line
('Value: ' || xmldom.getNodeValue
(value_node));
end loop;
xmlparser.freeParser
(p);
end;
/*
сохранение выборки в XML-документ средствами PL/SQL
*/
declare
my_xml
clob;
l_ctx dbms_xmlgen.ctxHandle;
l_sql varchar2(400);
mfile utl_file.file_type;
begin
l_sql := 'select * from dpaytype_dbt';
l_ctx := dbms_xmlgen.newContext(l_sql);
my_xml := dbms_xmlgen.getXml(l_ctx);
mfile := UTL_FILE.FOPEN('TEMP_DIR', '123.xml',
'w');
my_xml := substr(my_xml,1,19)||'
encoding="cp866" '||substr(my_xml,20);
IF UTL_FILE.IS_OPEN(mfile) THEN
UTL_FILE.PUTF (mfile,
'%s', my_xml);
UTL_FILE.FFLUSH(mfile);
UTL_FILE.FCLOSE(mfile);
END IF;
end;