DECLARE
  V_NUM      NUMBER := 0;
  SQL_STRING VARCHAR2(100);
  V_NAME     INFO_STU_1.NAME%TYPE;
BEGIN
  SQL_STRING := 'select t.name from info_stu_1 t where t.id = :1';
  WHILE V_NUM <> -1 LOOP
    V_NUM := &C_NUM;
    EXECUTE IMMEDIATE SQL_STRING
      INTO V_NAME
      USING V_NUM;
    DBMS_OUTPUT.PUT_LINE(V_NAME);
  END LOOP;
END;

解决方案 »

  1.   

    你这样循环退不出来的。
    oracle会先扫描代码,然后把变量替换好后运行,这样你就一直在取某个t.id的数据。死循环了。。
      

  2.   


    DECLARE
       V_NUM      NUMBER := 0;
       SQL_STRING VARCHAR2(100);
       V_NAME     INFO_STU_1.NAME%TYPE;
    BEGIN
       SQL_STRING := 'select t.name from info_stu_1 t where t.id = :1';
       WHILE V_NUM <> -1 LOOP
         V_NUM := &C_NUM;--只会执行一次
         EXECUTE IMMEDIATE SQL_STRING
           INTO V_NAME
           USING V_NUM;
         DBMS_OUTPUT.PUT_LINE(V_NAME);
       END LOOP;
    END; 明显死循环了,连退出条件都没有
      

  3.   


    我的意思是循环每执行一次,输入一次 V_NUM := &C_NUM;
    直到输入的为-1,循环结束
      

  4.   

    你的意思是?????
    plsql engine 不认啊