oracle預存程序中的select與參數詳細說明

來源:互聯網
上載者:User

 

create or replace procedure pro_test

  is

  begin

  select * from t_test;

  end pro_test;

  這個預存程序正確嗎?

  昨天因為這個,耽誤了好久(在一個預存程序中用了select語句,但既沒有用遊標也沒有用into).

  在預存程序(oracle資料庫教程)中如果用了select語句,要麼使用"select into 變數"語句要麼使用遊標,oracle不支援單獨的select語句(如表述有誤請指出).

  select into 比較簡單,但是如果返回的是一個結果集就無法滿足要求了.

  遊標分cursor型遊標和sys_refcursor型遊標兩種

  cursor型遊標--不能用於參數傳遞

  create or replace procedure pro_test() is

  cusor_1 cursor is select 欄位名 from 表名 where 條件;

  (或者

  select class_name into cursor_2 from class where ...;

  cursor的另一種用法,需要寫在begin和end之間)

  begin

  select class_name into cursor_2 from class where ...;

  可以使用

  for xxx in cursor

  loop

  ....

  end loop; --對cursor進行遍曆

  end pro_test;

  sys_refcursor型遊標

  create or replace procedure pro_test(rscursor out sys_refcursor) is

  cursor sys_refcursor;

  name varhcar(20);

  begin

  open cursor for

  select name from student where ...; --使用open來開啟進行賦值

  --遍曆

  loop

  fetch cursor into name --fetch into來開啟遍曆的每條資料

  exit when cursor%notfound; --未找到記錄資訊

  dbms_output.putline(xxxx);

  end loop;

  rscursor := cursor;

  end pro_test;


如何在預存程序中調用其他的預存程序(這些都是帶參數的)

 

一個帶參數的預存程序。
sql> create or replace procedure helloworld1 (
  2    p_user_name  varchar2
  3  ) as
  4  begin
  5     dbms_output.put_line('hello ' || p_user_name || '!');
  6  end helloworld1;
  7  /

procedure created.

sql> create or replace procedure callhelloworld1 (
  2    p_user  varchar2
  3  ) as
  4  begin
  5    -- 調用預存程序的 預存程序
  6    helloworld1(p_user);
  7  end callhelloworld1;
  8  /

procedure created.

執行
sql> set serveroutput on
sql> exec callhelloworld1( 'tom' );
hello tom!

pl/sql procedure successfully completed.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.