PL SQL中關於for的使用總結

2021-09-21 20:33:59 字數 1333 閱讀 3162

從兩段**中分析出兩個使用總結:

第一種形式

declare

v_max_id number; 

begin

--將表中主鍵的最大值找出賦給v_max_id 

select

max(deptno) 

into v_max_id 

from dept; 

--對資料表進行操作 

insert

into dept 

values(v_max_id+10,

'hr',

'china'); 

for i 

in (

select deptno 

from dept 

where deptno >=

'50') loop 

delete

from dept 

where deptno = i.deptno; 

--     dbms_output.put_line(i.deptno); 

end loop; 

end;

如果你的for中in後面的集合使用的是

select deptno 

from dept 

where deptno >=

'50'

這樣的形式,那麼你就得注意了,在後面呼叫i的時候,不能直接就使用i,這樣程式會報錯的,因為select出來的是乙個集合,i所對應的也是乙個大的集合,如果直接使用i,程式是找不到具體值資訊的,正確的使用應該是

i.deptno

以此來指定大集合中的小元素,這樣就可以了。

另一種形式

declare

v_max_id number; 

begin

--將表中主鍵的最大值找出賦給v_max_id 

select

max(deptno) 

into v_max_id 

from dept; 

--對資料表進行操作 

insert

into dept 

values(v_max_id+10,

'hr',

'china'); 

for i 

in 50..90 loop 

delete

from dept 

where deptno = i; 

end loop; 

end;

如果in後面直接給出了乙個具體的集合,例如

for i 

in 50..90 loop

在這種情況下就可以直接使用i了,具體見以上**。

關於shell中的pl sql指令碼錯誤排查與分析

今天有個同事問我乙個問題,他說執行shell指令碼的時候丟擲了ora 錯誤,但是對於錯誤的原因沒有思路,想讓我幫他看看。我檢視了下,指令碼的結構比較清晰。指令碼是有乙個shell指令碼,乙個sql檔案組成,shell指令碼作為基本的流程控制,sql檔案中是pl sql指令碼。大體明白了shell指令...

關於深度學習中Attention原理的總結

attention翻譯為注意力,對於不同的輸入資訊根據重要性不同賦予不同的權重。於人類對同一事物的注意力不同而得名。可以根據圖一來做簡單的理解,其中顏色較深的部分,指的是比較關注的分布。在nlp中,attention 於seqseq中,在最後乙個timestep後encode輸出開始 decode的...

C 中StringBuilder類的使用總結

string 物件是不可改變的。每次使用 system.string 類中的方法之一時,都要在記憶體中建立乙個新的字串物件,這就需要為該新物件分配新的空間。在需要對字串執行重複修改的情況下,與建立新的 string 物件相關的系統開銷可能會非常昂貴。如果要修改字串而不建立新的物件,則可以使用 sys...