环境为Oracle11g,登录账户为scott。
代码如下:
set serveroutput on;
DECLARE
l_ename emp.ename%TYPE := 'SCOTT';
l_empno emp.empno%TYPE;
l_cursor INTEGER;
l_retval INTEGER;
BEGIN
--打开游标
l_cursor := dbms_sql.open_cursor;
--解析动态SQL语句
dbms_sql.parse(l_cursor,'select empno from emp where ename = :ename',1);
--定义列
dbms_sql.define_column(l_cursor,1,l_empno);
--绑定输入参数
dbms_sql.bind_variable(l_cursor,'
--执行动态SQL
l_retval := dbms_sql.execute(l_cursor);
--打开循环体
LOOP
--fetch_rows在结果集中移动游标,如果未抵达末尾,返回1
EXIT WHEN dbms_sql.fetch_rows(l_cursor) <= 0;
--将当前行的查询结果写入上面定义的列中。
dbms_sql.column_value(l_cursor,1,l_empno);
--输出行
dbms_output.put_line(l_empno);
END LOOP;
--关闭游标
dbms_sql.close_cursor(l_cursor);
END;
/
执行结果:
使用SQL查询
语句:
select empno from emp where ename='SCOTT';
结果: