oracle存儲過程中的select語句是怎樣的
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;。
oracle select語句
1、from 后面可以接表
2、from 后面可以接視圖
3、from 后面可以接子查詢
你的理解是只能接表,你可以這么理解,from后面接的是數據集,表名也好子查詢也好都是數據集。
-----
=>; 的作用是 給前面的參數賦值的意思。
比如:proc_test 過程中有三個參數
參數1,
參數2, --這個參數有默認值 1000
參數3
此時如果你想保留參數2的默認值既可以 proc_test(參數1=>20,參數3=>40)
這個時候相當于
proc_test(20,1000,40);
---
以上,希望對你有所幫助。
oracle 怎樣將select 語句的查詢結果作為另一個select 語句where 后面
你這樣太復雜了。
無非就是下面幾種:1. existswhere exists (select 1 from abc where xxx)2. inwhere xxx in (select xxx from abc where 。)3. = (只能返回一行)where xxx = (select xxx from abc where 。
)當然,子查詢中是可以使用外部的表。比如select * from a where exists (select 1 from b where * = *)。
oracle的sql的select語句中有limit嗎
limit是mysql里的,select * from a order by b limit 6,1,取得按b排序的第6行a的值
而在oracle中想要實現是通過rownum:
select * from a where rownumROWNUM是一個序列,是oracle數據庫從數據文件或緩沖區中讀取數據的順序。它取得第一條記錄則rownum值為1,第二條為2,依次類推。ROWNUM是一個序列,是oracle數據庫從數據文件或緩沖區中讀取數據的順序。它取得第一條記錄則rownum值為1,第二條為2,依次類推。
轉載請注明出處華閱文章網 » oracle的select語句