2013-11-02 7 views
0

Что я хочу: у меня есть таблица с запросами, я должен сделать запрос, который выполняется одно из значений в этом столбцевыполнить запрос из колонки

т.е.

queryname query 
Chips  select * from chips_table c join all_stores s on c.id=s.id where s.loc>213... 
...   ... 

я знаю я хочу результат из приведенного выше запроса, как я могу запустить процедуру или сценарий или представление или этажерку как

getme(Chips) 

и это запустить

select * from chips_table c join all_stores s on c.id=s.id where s.loc>213... 
+1

Не PL/SQL парень, но выполнить немедленно или что-то подобное, что вы хотеть. –

ответ

0

Зависит от того, что вы хотите делать с результатами впоследствии, но для PL обработки/SQL, вы можете использовать что-то вроде:

-- Function to open and return the cursor for the query based on query name 
CREATE OR REPLACE FUNCTION get_cursor (in_queryname IN VARCHAR2) 
RETURN SYS_REFCURSOR 
IS 
    c_query SYS_REFCURSOR; 
    v_query queries.query%type; 
BEGIN 
    SELECT query INTO v_query FROM queries WHERE queryname = in_queryname; 
    OPEN c_query FOR v_query; 
    RETURN c_query; 
END; 

-- Example of use 
DECLARE 
    c_query SYS_REFCURSOR; 
    some_variable INTEGER; 
    another_variable INTEGER; 
BEGIN 
    LOOP 
     FETCH c_query INTO some_variable, another_variable; 
     EXIT WHEN c_query%NOTFOUND; 
     -- Do someting! 
    END LOOP; 
    CLOSE c_query; 
EXCEPTION WHEN no_data_found THEN 
    NULL; -- Log the error! 
END; 
+0

К сожалению, мне нужно создать представление с ним :( – user2586356

+0

Чтобы создать представление, просто используйте: EXECUTE IMMEDIATE 'CREATE VIEW' || queryname || 'AS' || query; –

Смежные вопросы