真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

oracle如何刪除游標(biāo) oracle報無效的游標(biāo)

Oracle查看和修改其最大的游標(biāo)數(shù)

以下的文章主要是介紹Oracle ;查看和修改其最大的游標(biāo)數(shù) 本文主要是通過相關(guān)代碼的方式來引出Oracle查看和修改其最大的游標(biāo)數(shù)的實(shí)際操作步驟 以下就是文章的具體內(nèi)容的描述 望你在瀏覽完之后 會有所收獲

創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供臥龍網(wǎng)站建設(shè)、臥龍做網(wǎng)站、臥龍網(wǎng)站設(shè)計、臥龍網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、臥龍企業(yè)網(wǎng)站模板建站服務(wù),十余年臥龍做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

Oracle查看Oracle最大游標(biāo)數(shù)

C:\Documents and Settings\Administratorsqlplus sys/admin@test as sysdba

(sys以dba登錄test 服務(wù))

SQL*Plus: Release Production on 星期四 月 : :

Copyright (c) Oracle Corporation All rights reserved

連接到:

Oracle i Enterprise Edition Release Production

With the Partitioning OLAP and Oracle Data Mining options

JServer Release Production

SQL show parameter open_cursors;

NAME TYPE VALUE

open_cursors integer

Oracle查看當(dāng)前打開的游標(biāo)數(shù)目

SQL select count(*) from v$open_cursor;

COUNT(*)

修改Oracle最大游標(biāo)數(shù)

SQL alter system set open_cursors= scope=both;

系統(tǒng)已更改

SQL show parameter open_cursors;

NAME TYPE VALUE

open_cursors integer

lishixinzhi/Article/program/Oracle/201311/18528

oracle中的游標(biāo)問題

declare

cursor bb(depno number) is select deptno from emp where deptno=depno for update;

BEGIN

for v_current in bb(30) loop

delete from emp where current of bb;

end loop;

end;

/

試試這個

oracle中有一張A表,如下圖,現(xiàn)在要求用存儲過程和游標(biāo)把重復(fù)的ID刪掉,保留一條最大的ID,應(yīng)該怎么寫?

"把重復(fù)的ID刪掉,保留一條最大的ID"

這句話有問題,id有重復(fù),就是有一樣的,怎么在保留最大的。

明白了,這樣寫:

CREATE OR REPLACE PROCEDURE test_pro(v_khlx IN VARCHAR2,

v_message out varchar2) is

TYPE TCUR IS REF CURSOR;

cur TCUR;

v_id varchar2(1000);

v_fp_dm varchar2(1000);

v_fp_hm varchar2(1000);

BEGIN

open cur for ' select max(fp_id),fp_dm,fp_hm from a_test group by fp_dm,fp_hm';

loop

fetch cur

into v_id,v_fp_dm,v_fp_hm ;

exit when cur%notfound;

delete from a_test t where t.fp_dm = v_fp_dm and t.fp_hm = v_fp_hm and t.fp_id != v_id ;

end loop;

close cur;

commit;

dbms_output.put_line('');

END;

oracle中游標(biāo)的使用?

這樣的問法好籠統(tǒng),不過,還是把我整理的給你看看吧~個人整理,無復(fù)制的哦~

A:分類:

1:隱式游標(biāo):非用戶明確聲明而產(chǎn)生的游標(biāo). 你根本看不到cursor這個關(guān)鍵字.

2:顯示游標(biāo):用戶明確通過cursor關(guān)鍵字來聲明的游標(biāo).

3:引用游標(biāo):

B:什么是隱式游標(biāo):

1:什么時候產(chǎn)生:

會在執(zhí)行任何合法的SQL語句中產(chǎn)生.他不一定存放數(shù)據(jù).也有可能存放記錄集所影響的行數(shù).

如果執(zhí)行SELECT語句,這個時候游標(biāo)會存放數(shù)據(jù).如果執(zhí)行INSERT、UPDATE、 DELETE會存放記錄影響的行數(shù).

C:隱式游標(biāo)叫什么名字:

名字叫sql

關(guān)于sql的游標(biāo)變量到底有哪些呢?

作用:返回最近一次執(zhí)行SQL語句所涉及的游標(biāo)相關(guān)信息.因?yàn)槊繄?zhí)行一次SQL語句,都會產(chǎn)生一個隱式游標(biāo).那么當(dāng)前執(zhí)行的SQL語句就是當(dāng)前的隱式游標(biāo).

sql%found

sql%notfound

sql%rowcount

sql%isopen

D:關(guān)于隱式游標(biāo)的例子:

create table 學(xué)生基本信息表

(

StuID number(2),

StuName varchar2(20)

)

alter table 學(xué)生基本信息表 add constraint PK_STUID primary key(StuID)

declare

num number:=0;

begin

num:=num;

delete from 學(xué)生基本信息表 where StuID=num;

if sql%notfound then

dbms_output.put_line('該行數(shù)據(jù)沒有發(fā)現(xiàn)');

else

dbms_output.put_line('數(shù)據(jù)被發(fā)現(xiàn)并刪除,影響的行數(shù)為:'||sql%rowcount);

end if;

end;

E:關(guān)于顯示游標(biāo)的例子:

1:如何定義顯示游標(biāo)

declare cursor cursor_name is [select語句];

declare cursor mycur is select empno,ename,job from scott.emp;

2:如何打開游標(biāo):

open cursor_name;

open mycur;

3:如何通過游標(biāo)來讀取數(shù)據(jù)

fetch cursor_name into variable_list

4:如何關(guān)閉游標(biāo):

close cursor_name;

close mycur;

注意:在Oracle中,不需要顯示銷毀游標(biāo).因?yàn)樵贠racle中,很多東西是由JAVA寫的.Oracle會自動銷毀游標(biāo).

5:舉例:

declare

cursor mycur is select empno,ename,job from emp; --創(chuàng)建游標(biāo)

vempno emp.empno%type;

vename emp.ename%type;

vjob emp.job%type;

begin

open mycur;--打開游標(biāo)

fetch mycur into vempno,vename,vjob;--使用數(shù)據(jù)

dbms_output.put_line('I Found You!'||mycur%rowcount||'行');

dbms_output.put_line('讀取的數(shù)據(jù)為'||vempno||' '||vename||' '||vjob);

close mycur;

end;

因?yàn)橹蛔x出來一條,所以要遍歷一下:

declare

cursor mycur is select empno,ename,job from emp;

vempno emp.empno%type;

vename emp.ename%type;

vjob emp.job%type;

begin

open mycur;

loop—循環(huán),遍歷

fetch mycur into vempno,vename,vjob;

exit when mycur%notfound;

if mycur%found then

dbms_output.put_line('讀取的數(shù)據(jù)為'||vempno||' '||vename||' '||vjob);

end if;

end loop;

dbms_output.put_line('I Found You!'||mycur%rowcount||'行');

close mycur;

end;

6:通常情況下我們在讀取表數(shù)據(jù)的時候,我們需要動態(tài)的去查詢.所以能不能在Oracle中給游標(biāo)帶參數(shù)呢?可以!

1):如何定義帶參數(shù)的游標(biāo):

declare cursor cursor_name(參數(shù)名稱 參數(shù)類型描述) is select xxxxx from bbbbb where aaa==??? and ccc=???;

2):例子:

游標(biāo)是一個集合,讀取數(shù)據(jù)有兩種方式

第一種方式: open fetch close

第二種方式: for 一但使用了for循環(huán) ,在循環(huán)剛剛開始的時候,相當(dāng)于執(zhí)行open,在處理循環(huán)的時候,相當(dāng)于執(zhí)行fetch,在退出循環(huán)的時候,相當(dāng)于執(zhí)行了close

Declare cursor query(vname varchar) is select empno,ename,job from emp where ename like'%'||vname||'%';

三種游標(biāo)的例子:

--

DECLARE

CURSOR TEST_CUR IS

SELECT * FROM EMP;

MY_CUR EMP%ROWTYPE;

BEGIN

OPEN TEST_CUR;

FETCH TEST_CUR INTO MY_CUR;

WHILE TEST_CUR%FOUND

LOOP

DBMS_OUTPUT.PUT_LINE(MY_CUR.EMPNO||','||MY_CUR.ENAME);

FETCH TEST_CUR INTO MY_CUR;

END LOOP;

CLOSE TEST_CUR;

END;

--

DECLARE

CURSOR TEST_CUR IS

SELECT * FROM EMP;

BEGIN

FOR MY_CUR IN TEST_CUR

LOOP

DBMS_OUTPUT.PUT_LINE(MY_CUR.EMPNO||','||MY_CUR.ENAME);

END LOOP;

END;

--

DECLARE

CURSOR TEST_CUR(V_SAL NUMBER) IS

SELECT *

FROM EMP

WHERE SAL V_SAL;

V_SAL1 NUMBER ;

BEGIN

V_SAL1 := 2000;

FOR MY_CUR IN TEST_CUR(V_SAL1)

LOOP

DBMS_OUTPUT.PUT_LINE(MY_CUR.EMPNO||','||MY_CUR.ENAME);

END LOOP;

END;

Oracle的游標(biāo)查詢問題+清楚table中數(shù)據(jù)的方法

TRUNCATE TABLE速度更快,不備份日志

DELETE FROM TABLE + COMMIT ,速度稍慢,備份日志

兩者都是刪除表內(nèi)容不刪除表結(jié)構(gòu)。

oracle游標(biāo)的使用問題

應(yīng)該是這樣的,因?yàn)闆]有環(huán)境,沒測試,你試下。

CREATE OR REPLACE PROCEDURE PRC_XXX() AS

C SYS_REFCURSOR;

TP INTEGER;

BEGIN

OPEN C FOR

SELECT TOYPRICE

FROM TOYS; --取出主鍵和toyprice字段值

LOOP

FETCH C

INTO TP; --最好是把主鍵一起取出來,作為刪除和更新的條件

EXIT WHEN CURSOR%NOTFOUND;

IF TP 150

THEN

UPDATE TOYS

SET TOYPRICE = 150

WHERE TOYPRICE = TP;

ELSE

IF TP 200

THEN

DBMS_OUTPUT.PUTLINE(TP);

ELSE

IF TP 300

THEN

DELETE FROM TOYS

WHERE TOYPRICE = TP;

END IF;

END IF;

END IF;

END LOOP;

COMMIT;

CLOSE C;

END PRC_XXX;


本文標(biāo)題:oracle如何刪除游標(biāo) oracle報無效的游標(biāo)
網(wǎng)址分享:http://weahome.cn/article/hghjio.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部