在一个过程中,我首先构建一个查询(select的联合)和DB中的一些数据。
然后我想将查询的结果放在一个文件中,但是当我尝试使用时
execute immediate
或dbms_sql.execute
跟随我构建的查询,没有任何反应。
所以我想知道,如何执行这样的查询?
由于
答案 0 :(得分:2)
SET SERVEROUTPUT ON;
SPOOL TEST.TXT
DECLARE
test_cur SYS_REFCURSOR;
v_date DATE;
BEGIN
OPEN test_cur FOR 'SELECT SYSDATE FROM DUAL';
FETCH test_cur INTO v_date;
CLOSE test_cur;
DBMS_OUTPUT.put_line ('DATE IS ' || v_date);
END;
SPOOL OFF
DATE IS 11-DEC-12
PL/SQL procedure successfully completed.
或直接没有PLSQL BLOCK
SET SERVEROUTPUT ON;
SPOOL TEST.TXT
SELECT SYSDATE FROM DUAL;
SPOOL OFF
SYSDATE
---------
11-DEC-12
1 row selected.
修改强>
SET SERVEROUTPUT ON;
SPOOL TEST.TXT
DECLARE
CURSOR test_cur
IS SELECT * FROM XYZ;
BEGIN
FOR v_test_row IN test_cur;
LOOP
DBMS_OUTPUT.put_line ('XXXYYYY ' || v_test_row .<your column name>);
END LOOP;
END;
SPOOL OFF
答案 1 :(得分:1)
当从SQL * Plus等客户端执行查询时,很容易忘记在后台客户端程序打开游标并循环获取每一行。 在PL / SQL中你必须这样做: