編寫一個過程將查詢的欄位和where條件中的字串值動態調用,where字串

來源:互聯網
上載者:User

編寫一個過程將查詢的欄位和where條件中的字串值動態調用,where字串

以scott使用者中的emp表為例,編寫一個預存程序查詢emp表中某個欄位的值,但是要查哪個欄位是不確定的,where條件中傳入的字串也是不確定的。

DECLARE   v_a       VARCHAR2(20)   := 'sal';   v_sql     VARCHAR2(200);   TYPE tab_org_name     IS TABLE OF VARCHAR2(50);   v_org_name_tab        tab_org_name;BEGIN   v_sql := 'SELECT '|| v_a ||' FROM emp';   dbms_output.put_line(v_sql);   EXECUTE IMMEDIATE v_sql BULK COLLECT INTO v_org_name_tab;   FOR i IN 1 .. v_org_name_tab.count LOOP      dbms_output.put_line(v_org_name_tab(i));   END LOOP;END;


如果帶where條件,一定要注意where條件中有字串時對單引號的應用,正確代碼如下:

DECLARE   v_a       VARCHAR2(20)   := 'sal';   v_info    VARCHAR2(20)   := '''CLERK''';    v_sql     VARCHAR2(200);   TYPE tab_org_name     IS TABLE OF VARCHAR2(50);   v_org_name_tab        tab_org_name;BEGIN   v_sql := 'SELECT '|| v_a ||' FROM emp WHERE emp.JOB = '||v_info;   dbms_output.put_line(v_sql);   EXECUTE IMMEDIATE v_sql BULK COLLECT INTO v_org_name_tab;   FOR i IN 1 .. v_org_name_tab.count LOOP      dbms_output.put_line(v_org_name_tab(i));   END LOOP;END;

執行結果如:




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.