SQL / TSQL / PLSQL ToolBox

 

1. Proste zaokrąglenie w górę (Oracle PL/SQL):

 

declare
   vn_number   NUMBER;
   vn_roundup  NUMBER;
begin
   vn_number   := -1521;
   vn_roundup  := 100;
   vn_number   := ceil(vn_number / vn_roundup) * vn_roundup;
   dbms_output.put_line(to_char(vn_number));
end;
/

 

Przykładowe wyniki:

 

0 -> 0 
1 -> 100
100 -> 100
1521 -> 1600
-1521 -> -1500

 

 

2. Precyzja i skala - typ numeryczny:

 

precyzja - maksymalna liczba cyfr reprezentująca daną liczbę np. liczba -8271382.288 ma precyzję 10 (10 cyfr)

 

skala - maksymalna liczba cyfr po przecinku, skala liczba w powyższym przykładzie wynosi 3

 

 

Do przechowywania kwot polecany format to DECIMAL(19,4) (Oracle)

 

3. Oracle PL/SQL - operacja "LEFT" na stringu:

 

SELECT SUBSTR('ALAMAKOTA',-4) FROM DUAL;

 

 

4. Oracle - zliczenie wierszy we wszystkich tabelach użytkownika:

 

SELECT table_name,
       TO_NUMBER (
          EXTRACTVALUE (
             xmltype (
                DBMS_XMLGEN.getxml ('select count(*) c from ' || table_name)),
             '/ROWSET/ROW/C'))
          COUNT
  FROM user_tables; 

 

 

5. Oracle - zliczenie średniej dziennej liczby zmian (insert/update) we wszystkich tabelach użytkownika w ciągu roku.

 

Założenie: każda z tabel ma kolmnę timemodified, wiersze nie są nigdy usuwane.

 

SELECT table_name,
       TO_NUMBER (
          EXTRACTVALUE (
             xmltype (
                DBMS_XMLGEN.getxml (
                      'SELECT AVG(row_count) rc
                          FROM (
                               SELECT TRUNC(timemodified), count(*) AS row_count
                                 FROM '
                   || table_name
                   || '  
                                WHERE timemodified
                                       BETWEEN TO_DATE(''01-JAN-2013 00:00:00'', ''DD-MON-YYYY HH24:MI:SS'')
                                           AND TO_DATE(''31-DEC-2013 23:59:59'', ''DD-MON-YYYY HH24:MI:SS'')
                                GROUP BY TRUNC(timemodified)
                               )')),
             '/ROWSET/ROW/RC'))
          COUNT
  FROM user_tables;

 



6. Dynamiczne wywołanie procedury z parametrami IN OUT:

 

EXECUTE IMMEDIATE 
   'BEGIN :1 := foopackage.f_getfxrate@target(
      :ps_ccy1, 
      :ps_ccy2, 
      :pd_rate_dt, 
      :ps_ratetype, 
      :ps_timeframe); 
    END;'
USING OUT vn_fxrate, 
      IN ps_ccy1, 
      IN ps_ccy2, 
      IN pd_rate_dt, 
      IN ps_ratetype, 
      IN ps_timeframe;

 







PowerBuilder Tetris
D - Tetris



Programowanie iOS

C# ToolBox

SQL / TSQL / PLSQL ToolBox

Linux / Unix ToolBox





Zaprzyjaznione Strony

Sprite Bandits

Cake Time