Всякие мелочи по 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;