0
如果我想從表中獲取記錄(表名是輸入的動態變量),如何定義記錄所有者或如何從這個定義的表中獲取數據? p_table_name%rowtype不會編譯,因爲p_table_name是一個參數,而不是表名。PLSQL:動態表記錄保存程序
PROCEDURE do_scan(p_table_name IN VARCHAR2
,p_min_num IN NUMBER
,p_time_range IN NUMBER
,p_problem_desc OUT
,p_result_code OUT)
IS
TYPE ObjCurTyp IS REF CURSOR;
v_obj_cursor ObjCurTyp;
v_obj_record ???????(p_table_name%rowtype)
BEGIN
v_stmt_str := 'Select * from :t where date_started > TRUNC(SYSDATE-3)';
OPEN v_obj_cursor FOR v_stmt_str USING p_table_name;
LOOP
FETCH v_obj_cursor INTO v_obj_record;
EXIT WHEN v_obj_cursor %NOTFOUND;
END LOOP;
END do_scan;
我不認爲它可以創建一個動態的記錄類型。可能會有一個完全不同的更好的方法來獲得你想要的結果。你想要什麼程序輸出?我認爲它與兩個輸出參數有關。 –
@Jeremy我只想從表格中提取所有數據。這兩個輸出參數僅用於檢查數據是否正確檢索。 – Frank
數據一旦被提取就會在哪裏?是不是有一些你想做的工作,從表中取出所有的行,沒有後續步驟似乎毫無意義。 –