Warning: Declaration of Suffusion_MM_Walker::start_el(&$output, $item, $depth, $args) should be compatible with Walker_Nav_Menu::start_el(&$output, $item, $depth = 0, $args = Array, $id = 0) in /DISK2/WWW/plsql.cz/www/wp-content/themes/suffusion/library/suffusion-walkers.php on line 0
Dec 192011
 

Po delší době jsem se podíval do statistik tohoto blogu a s potěšením zjistil, že již tento blog navšívilo krásných 3000+ unikátních návštěvníků, což možná nezní jako ohromné číslo, ale i tak to potěší (a děkuji i za maily).

Již dvakrát jsem vytáhl z hledaných výrazů na této stránce ty, které jste zadaly, ale patrně jste neobdrželi uspokojivou odpověď, což se snažím postupně napravit. Dnes vybírám dalších 5 “dotazů”:

1) oracle for loop from min to max

PL/SQL umožňuje (narozdíl od většiny jazyků) loopovat pouze po jednotkovém kroku a v případě, že je potřeba nějaký jiný krok je třeba si pomoci vynásobením interační proměnné jak doporučuje dokumentace Oracle.  Samotný loop pak vypadá takto:

BEGIN
FOR I IN 1..100 LOOP
dbms_output.put_line(i);
END LOOP;
END;

Což je nejjednodušší forma cyklu FOR (bez labelu atd.), o proti jiným jazykům lze zadat slovo REVERSE, které zajístí, že cyklus bude interovat odzadu.
2) oracle jak zjistím velikost tabulky

To je trošku tricky otázka – záleží na tom, co je myšleno velikostí tabulky – od počtu řádků, počtu datových bloků až po počet využitých datových bloků až po velikost tabulky po shrinknutí. Kolik aktuálně tabula zabírá lze zjistit z *_extends:

SELECT
segment_name           tabulka,
SUM(bytes)/1024 table_size_kb
FROM
dba_extents
WHERE
segment_name='EMPLOYEES'
GROUP BY segment_name;

3) Zjištění jestli tabulka existuje:

Pomocí selectu do systémových view : ALL_TABLES, USER_TABLES případne DBA_TABLES  (psáno *_TABLES) a jiných, například ALL_TAB_COLS (tabulka má alespoň jeden sloupec), nebo přímo do core tabulky sys.tab$ / sys.obj$

SELECT decode(count(table_name),0,'neexistuje',1,'existuje') FROM ALL_TABLES WHERE TABLE_NAME LIKE '%MY_TABLE%' AND OWNER='AZOR';

Co je asi duležité připomenout je, že pokud jste si to dvojuvozovkami nevyžádali, pak jména v systémových tabulkách jsou vždy velká.

Nicméně způsobů jak zjistit jestli existuje tabulka je spousta – od příkazu desc|ribe až po prostou zkoušku selectu do ní.

4) zjisteni scn

Možnost první nepřesné SCN (mapování na čas s periodou 3sekundy, do historie 180h):
SELECT TIMESTAMP_TO_SCN(SYSTIMESTAMP) FROM DUAL;
Možnost druhá, přesné SCN:
SELECT DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER FROM DUAL;
Možnost třetí, přesné SCN:
SELECT CURRENT_SCN FROM V$DATABASE;

možností je pochopitelně více..

5) zjištění aktuální minuty
Například pomocí
SELECT TO_CHAR(sysdate,'MI') FROM DUAL;

 Posted by at 20:35

 Leave a Reply

(required)

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>