Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE TYPE EMA_ROW AS OBJECT ( T_TIME VARCHAR2(50), EMA NUMBER );
- CREATE TYPE EMA_TAB IS TABLE OF EMA_ROW;
- CREATE OR REPLACE FUNCTION GET_EMA_TAB () RETURN
- EMA_TAB PIPELINED
- IS
- AMOUNT NUMBER;
- BEGIN
- SELECT COUNT(*) INTO AMOUNT FROM RTS_PRICE;
- FOR i IN 1 .. AMOUNT LOOP
- PIPE ROW(t_tf_row(i, 'Description for ' || i));
- END LOOP;
- RETURN;
- END GET_EMA_TAB;
- SELECT * FROM RTS_PRICE
- CREATE OR REPLACE FUNCTION GET_EMA(I IN NUMBER, N IN NUMBER) RETURN NUMBER
- IS
- F_PRICE NUMBER;
- BEGIN
- SELECT PRICE INTO F_PRICE FROM RTS_PRICE;
- IF n < 2
- THEN RETURN F_PRICE;
- ELSE RETURN GET_EMA(I - 1, N) + (F_PRICE - GET_EMA(I - 1, N)) * 2 / N;
- END IF;
- END GET_EMA;
- CREATE OR REPLACE PROCEDURE FILL_EMA
- IS
- PREV NUMBER;
- CURR NUMBER;
- BEGIN
- select NVL(MIN(PRICE), 0) INTO PREV from (select PRICE from RTS_PRICE order by TICK_TIME) where rownum = 1;
- FOR vItems IN (
- SELECT TICK_TIME, PRICE
- FROM RTS_PRICE
- ORDER BY TICK_TIME
- )
- LOOP
- CURR := PREV + (vItems.PRICE - PREV) * 2 / 10;
- INSERT INTO EMA_T(TICK_TIME, PRICE) VALUES(vItems.TICK_TIME, CURR);
- PREV := CURR;
- END LOOP;
- RETURN;
- END FILL_EMA;
- begin
- FILL_EMA;
- end;
- SELECT * FROM RTS_PRICE
- --------------------------------------------------------------------------------
- CREATE TABLE EMA_T(
- TICK_TIME VARCHAR2(100),
- PRICE NUMBER
- );
- DROP TABLE EMA_T;
- SELECT * FROM EMA_T
- select * from (select * from RTS_PRICE
- order by TICK_TIME)
- where rownum = 1;
- SELECT MIN(PRICE) FROM RTS_PRICE ORDER BY TICK_TIME
- select MIN(PRICE) from (select PRICE from RTS_PRICE order by TICK_TIME) where rownum = 1;
- select NVL(MIN(PRICE), 0) from (select PRICE from RTS_PRICE order by TICK_TIME) where rownum = 1;
- SELECT * FROM EMA_T;
- SELECT COUNT(*) FROM RTS_PRICE
- SELECT * FROM RTS_PRICE
- SELECT * FROM EMA_T
- CREATE VIEW RTS_EMA AS SELECT RTS_PRICE.TICK_TIME, RTS_PRICE.PRICE RTS_PRICE, EMA_T.PRICE EMA_PRICE FROM RTS_PRICE, EMA_T WHERE RTS_PRICE.TICK_TIME = EMA_T.TICK_TIME
Add Comment
Please, Sign In to add comment