首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

大神,这段代码有什么有关问题呢?一执行就报错

2012-12-27 
请教各位大神,这段代码有什么问题呢?一执行就报错DECLAREV_NUMNUMBER : 0SQL_STRING VARCHAR2(100)V_NA

请教各位大神,这段代码有什么问题呢?一执行就报错

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; 

明显死循环了,连退出条件都没有
[其他解释]
引用:
引用:
SQL code?



123456789101112131415

DECLARE   V_NUM      NUMBER := 0;    SQL_STRING VARCHAR2(100);    V_NAME     INFO_STU_1.NAME%TYPE; BEGIN   SQL_STRING := 'select t.nam……

你的意思是?????
plsql engine 不认啊
[其他解释]
你把错误提示贴出来啊。
[其他解释]
引用:
SQL code?



123456789101112131415

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 wher……


我的意思是循环每执行一次,输入一次 V_NUM := &C_NUM;
直到输入的为-1,循环结束
[其他解释]
引用:
引用:
SQL code?



123456789101112131415

DECLARE   V_NUM      NUMBER := 0;    SQL_STRING VARCHAR2(100);    V_NAME     INFO_STU_1.NAME%TYPE; BEGIN   SQL_STRING := 'select t.nam……


那该如何实现呢?

热点排行