我一直在查看Oracle中的DBMS_SQL包,並試圖查看是否有創建視圖的方法或用戶可以從中選擇以查看動態SQL查詢的結果。允許用戶從動態SQL中進行選擇
我有基於文檔的測試過程:
CREATE OR REPLACE PROCEDURE test_dyn_sql AS
cursor_name INTEGER;
rows_processed INTEGER;
l_query LONG;
BEGIN
l_query := 'SELECT SYSDATE AS the_date, ''ABC'' AS the_string, 1 AS the_int FROM dual';
cursor_name := dbms_sql.open_cursor;
DBMS_SQL.PARSE(cursor_name, l_query, DBMS_SQL.NATIVE);
rows_processed := DBMS_SQL.EXECUTE(cursor_name);
DBMS_SQL.CLOSE_CURSOR(cursor_name);
EXCEPTION
WHEN OTHERS THEN
DBMS_SQL.CLOSE_CURSOR(cursor_name);
DBMS_OUTPUT.put_line('ERROR');
END;
但這只是執行語句,不返回任何東西。我想要的是一個視圖,所以用戶可以做一個SELECT the_date FROM some_view
並獲得結果。我不會提前知道列名或列數,所以這就是爲什麼我要使用動態SQL解決方案。
我不認爲有什麼辦法可以做到這一點。這不是真正的觀點。你也許可以創建一個返回表的函數?查看[this](http://oracle-base.com/articles/misc/pipelined-table-functions.php)表格函數的例子。 – OldProgrammer 2015-04-02 21:11:05