select語句中的字段通過變量來決定是那個
下面測試
insert into tb11 (one) values ('1');//用字段名取值得到 1
SQL> set serveroutput on
SQL> 
SQL> declare
  2  v_tin varchar2(22);
  3  V_BACK VARCHAR(22);
  4  begin
  5  v_tin:='ONE';
  6  SELECT ONE INTO V_BACK FROM TB11 WHERE ROWNUM<2;
  7  DBMS_OUTPUT.put_line(V_BACK);
  8  END;
  9  /1//用變量取值,只得到變量值 one
SQL> declare
  2  v_tin varchar2(22);
  3  V_BACK VARCHAR(22);
  4  begin
  5  v_tin:='ONE';
  6  SELECT v_tin INTO V_BACK FROM TB11 WHERE ROWNUM<2;
  7  DBMS_OUTPUT.put_line(V_BACK);
  8  END;
  9  /ONE結果不行 
現在的需求是表有很多的字段,想通過變量的值來指定其中的 1 2個字段,求解

解决方案 »

  1.   

    --楼主应该用动态的sql
    declare 
    v_tin varchar2(22); 
    V_BACK VARCHAR(22); 
    begin 
    v_tin:='id'; 
    execute immediate 'SELECT '|| v_tin || ' FROM a WHERE ROWNUM <2 'INTO V_BACK; 
    DBMS_OUTPUT.put_line(V_BACK); 
    END; 
      

  2.   


    這種方式也考慮過 無奈要用到的sql有幾十行 考慮到換行,符號的轉換 這樣不太好
      

  3.   

    最后用1樓的方法去做 不過sql太長 感覺后期維護會比較麻煩