我想要什麼:我有查詢表,我需要運行的一個值在該列運行從列的查詢
即查詢:
queryname query
Chips select * from chips_table c join all_stores s on c.id=s.id where s.loc>213...
... ...
我知道我想從上面的查詢,我怎麼可以運行一個程序或腳本,查看或諸如此類的東西像
getme(Chips)
,這對運行
結果我想要什麼:我有查詢表,我需要運行的一個值在該列運行從列的查詢
即查詢:
queryname query
Chips select * from chips_table c join all_stores s on c.id=s.id where s.loc>213...
... ...
我知道我想從上面的查詢,我怎麼可以運行一個程序或腳本,查看或諸如此類的東西像
getme(Chips)
,這對運行
結果取決於你想以後的結果做什麼,但對於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;
不幸的是我需要用它創建一個視圖:( – user2586356
要創建一個視圖,請使用:EXECUTE IMMEDIATE'CREATE VIEW'|| queryname ||'AS'|| query; –
不是一個PL/SQL的傢伙,但執行直接或類似的東西就是你想。 –