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;
------最佳解决方案--------------------
标量只有一次输入的机会。
------其他解决方案--------------------
你这样循环退不出来的。
oracle会先扫描代码,然后把变量替换好后运行,这样你就一直在取某个t.id的数据。死循环了。。
------其他解决方案--------------------
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;
明显死循环了,连退出条件都没有
------其他解决方案--------------------
你的意思是?????
plsql engine 不认啊
------其他解决方案--------------------
你把错误提示贴出来啊。
------其他解决方案--------------------
我的意思是循环每执行一次,输入一次 V_NUM := &C_NUM;
直到输入的为-1,循环结束
------其他解决方案--------------------