熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracle動態SQL返回單條結果和結果集

2013-11-13 15:43:09  來源: Oracle 

   DDL 和 DML

  /*** DDL ***/

  begin

  EXECUTE IMMEDIATE drop table temp_;

  EXECUTE IMMEDIATE create table temp_(name varchar());

  end;

  /*** DML ***/

  declare

  v_ varchar();

  v_ varchar();

  str varchar();

  begin

  v_:=測試人員;

  v_:=北京;

  str := INSERT INTO test (name address) VALUES (: :);

  EXECUTE IMMEDIATE str USING v_ v_;

  commit;

  end;

   返回單條結果

  declare

  str varchar();

  c_ varchar();

  r_ test%rowtype;

  begin

  c_:=測試人員;

  str:=select * from test where name=:c WHERE ROWNUM=;

  execute immediate str into r_ using c_;

  DBMS_OUTPUTPUT_LINE(R_NAME||R_ADDRESS);

  end ;

   返回結果集

  CREATE OR REPLACE package pkg_test as

  /* 定義ref cursor類型

  不加return類型為弱類型允許動態sql查詢

  否則為強類型無法使用動態sql查詢;

  */

  type myrctype is ref cursor;

  函數申明

  function get(intID number) return myrctype;

  end pkg_test;

  /

  CREATE OR REPLACE package body pkg_test as

  函數體

  function get(intID number) return myrctype is

  rc myrctype; 定義ref cursor變量

  sqlstr varchar();

  begin

  if intID= then

  靜態測試直接用select語句直接返回結果

  open rc for select idnamesexaddresspostcodebirthday from student;

  else

  動態sql賦值用:w_id來申明該變量從外部獲得

  sqlstr := select idnamesexaddresspostcodebirthday from student where id=:w_id;

  動態測試用sqlstr字符串返回結果用using關鍵詞傳遞參數

  open rc for sqlstr using intid;

  end if;

  return rc;

  end get;

  end pkg_test;

  /


From:http://tw.wingwit.com/Article/program/Oracle/201311/17186.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.