0

我想要什么:我有一个带有查询的表,我需要进行一个查询来运行该列中的一个值

IE:

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...
4

1 回答 1

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;
于 2013-11-02T14:47:23.380 回答