DECLARE
lvs_dname VARCHAR2(40);
type t_sor is ref cursor;
v_sor t_sor;
str varchar2(50);
BEGIN
str:='SELECT Name FROM police Where Code=''046709''';
open v_sor for str;
fetch v_sor into lvs_dname;
DBMS_OUTPUT.PUT_LINE(lvs_dname);
while v_sor.%FOUND loop
fetch v_sor into lvs_dnmae;
DBMS_OUTPUT.PUT_LINE(lvs_dname);
end loop;
close v_sor;
EXCEPTION WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('NO DATA_FOUND');
WHEN TOO_MANY_ROWS THEN
DBMS_OUTPUT.PUT_LINE('TOO_MANY_ROWS');
END;
/另外可以在sql worksheet可以实现你所说的单步执行。

解决方案 »

  1.   

    create or replace procedure pro_name 
    as     lvs_dname VARCHAR2(40);
    BEGIN
        SELECT Name
            INTO lvs_dname
        FROM police
        Where Code='046709';
        DBMS_OUTPUT.PUT_LINE(lvs_dname);
        EXCEPTION WHEN NO_DATA_FOUND THEN
        DBMS_OUTPUT.PUT_LINE('NO DATA_FOUND');
        WHEN TOO_MANY_ROWS THEN
        DBMS_OUTPUT.PUT_LINE('TOO_MANY_ROWS');
    END;
      

  2.   

    调试存储过程可以使用pl/sql developer
      

  3.   

    使用toad 或pl/sql developer工具
      

  4.   

    多谢各位大哥的热指导,但小弟还有些一些疑问.
    1.create or replace procedure Test
    as     lvs_dname VARCHAR2(40);
    BEGIN
        SELECT Name
            INTO lvs_dname
        FROM police
        Where Code='046709';
        DBMS_OUTPUT.PUT_LINE(lvs_dname);
        EXCEPTION WHEN NO_DATA_FOUND THEN
        DBMS_OUTPUT.PUT_LINE('NO DATA_FOUND');
        WHEN TOO_MANY_ROWS THEN
        DBMS_OUTPUT.PUT_LINE('TOO_MANY_ROWS');
    END; 
      出现如下错误提示:
       行号= 1 列号= 27 错误文本= PLS-00103: 出现符号 "CREATE"在需要下列之一时:  ( ; is with authid as    cluster compress order using compiled wrapped external    deterministic parallel_enable pipelined 2.不知各位大哥一般是如何编写和调试存储过程的.
      是否有些什么工具使用.好像Sql Plus 和Sql plus worksheet 不够方便.   希望各位大哥能够继续指导.