在存储过程中有FOR v_emp IN (SELECT TABLE_NAME,ATTR_NAME,DOWN_LIMIT,DOWN_LIMIT2,DOWN_LIMIT3,UP_LIMIT,UP_LIMIT2,UP_LIMIT3 FROM ALARM_LJZ_MANAGE Where TABLE_NAME=TableInput and WELL_ID=WELL_ID) LOOP 
上面的语句中TableInput 是字符串,该如何写
如上面这样写where 条件不起作用

解决方案 »

  1.   

    在存储过程中有FOR v_emp IN (SELECT TABLE_NAME,ATTR_NAME,DOWN_LIMIT,DOWN_LIMIT2,DOWN_LIMIT3,UP_LIMIT,UP_LIMIT2,UP_LIMIT3 FROM ALARM_LJZ_MANAGE Where TABLE_NAME=TableInput and WELL_ID=WELL_ID) LOOP  
    上面的语句中TableInput 是过程定义字符串变量,该如何写 
    如上面这样写where 条件不起作用
      

  2.   

    用动态sql啊
    sqlstr=SELECT TABLE_NAME,ATTR_NAME,DOWN_LIMIT,DOWN_LIMIT2,DOWN_LIMIT3,UP_LIMIT,UP_LIMIT2,UP_LIMIT3 FROM ALARM_LJZ_MANAGE Where TABLE_NAME=TableInput and WELL_ID=WELL_ID
    exec immediate sqlstr
      

  3.   

    不可能啊,只要你declare了,而且有赋值,应该是可以执行的。你先
    declare abc integer

    SELECT count(*) into abc FROM ALARM_LJZ_MANAGE Where TABLE_NAME=TableInput and WELL_ID=WELL_ID看看能不能取出值来?
      

  4.   

    如果你的TableInput  有定义的话,这个语句是正确的,不起作用的话看看是不是数据问题了