oracle 儲存過程基礎知識3

2021-05-04 13:08:25 字數 4528 閱讀 8668

引用物件

sql server 允許建立的儲存過程引用尚不存在的物件。在建立時,只進行語法檢查。執行時,如果快取記憶體中尚無有效的計畫,則編譯儲存過程以生成執行計畫。只有在編譯過 程中才解析儲存過程中引用的所有物件。因此,如果語法正確的儲存過程引用了不存在的物件,則仍可以成功建立,但在執行時將失敗,因為所引用的物件不存在。 有關更多資訊,請參見延遲名稱解析和編譯。51testing軟體測試網q]}[&j8qo/cf1c&b

%oa mr!s%m~h/py `0 延遲名稱解析和相容級別51testing軟體測試網+oy)m"f;}.?es

51testing軟體測試網-f9xrs6ib/s ~%r/r5h

sql server 允許 transact-sql 儲存過程在建立時引用不存在的表。這種能力稱為延遲名稱解析。不過,如果 transact-sql 儲存過程引用了該儲存過程中定義的表,而相容級別設定(通過執行 sp_dbcmptlevel 來設定)為 65,則在建立時會發出警告資訊。而如果在執行時所引用的表不存在,將返回錯誤資訊。有關更多資訊,請參見 sp_dbcmptlevel 和延遲名稱解析和編譯。

w? @e1~vo�ou0

51testing軟體測試網|y#}bt2wng

,b?'teg&z q�ns0

wg1x pd#r5y~4h(o5`&@ ~!n

過程提取結果集 rs 的頭 5 行。51testing軟體測試網*z8b^9a}ktj.hl

51testing軟體測試網n"lmh3tq(bcw

51testing軟體測試網,^zc"}vb|(zk`

過程返回到其呼叫者。

$lh4drq4q nzz0

51testing軟體測試網a4f;e3e/b&aw8x

51testing軟體測試網�c n9p m /a0r/~4fa$/

返回到呼叫者的結果集 rs 由 rs 的第 6 到 100 行組成,呼叫者中的游標處於 rs 的第一行之前。51testing軟體測試網su5giex%q2j l

對於只進游標,如果儲存過程完成後,游標位於第一行的前面,則整個結果集將返回給呼叫批處理、儲存過程或觸發器。返回時,游標將位於第一行的前面。

5v.pvb zs~a0

j+n#v0y:g+ugq0

51testing軟體測試網7k a'r1uum,]

對於只進游標,如果儲存過程完成後,游標的位置超出最後一行的結尾,則為呼叫批處理、儲存過程或觸發器返回空結果集。51testing軟體測試網8lyis_d'~8@;`-z

51testing軟體測試網l uq!fvu%^ f

說明 空結果集與空值不同。

t%c,f(@e:hz-v/u1a0

51testing軟體測試網@_)c4ho9ge'd

對於可滾動游標,在儲存過程執行結束時,結果集中的所有行均會返回給呼叫批處理、儲存過程或觸發器。返回時,游標保留在過程中最後一次執行提取時的位置。

v"m*ag|r0

$k`4m`q&w 對於任意型別的游標,如果游標關閉,則將空值傳遞**用批處理、儲存過程或觸發器。如果將游標指派給乙個引數,但該游標從未開啟過,也會出現這種情況。51testing軟體測試網:i w f&o;@/q cmvkk.v0 自動執行儲存過程51testing軟體測試網*r)pnehh

sql server 啟動時可以自動執行乙個或多個儲存過程。這些儲存過程必須由系統管理員建立,並在 sysadmin 固定伺服器角色下作為後台過程執行。這些過程不能有任何輸入引數。51testing軟體測試網5g o3b6o4zj

6vk;d

51testing軟體測試網![5l,b,yo 停止在 sql server 啟動時執行過程。

檢視 sql server 啟動時執行的所有過程的列表。

i�wf.m6ks%}6b!i0 儲存過程巢狀51testing軟體測試網7x;yox*x+pg*w9u]e(qi3m

效能監視器物件名 效能監視計數器名稱

o'~#z2yzm5lqlw0 sqlserver:緩衝區管理器 快取記憶體大小(頁面數)

o)m5q'ieb0a!z^0 sqlserver:快取記憶體管理器 快取記憶體命中率51testing軟體測試網 @zp6]h

快取記憶體頁51testing軟體測試網,^fl%l ra!d

快取記憶體物件計數*51testing軟體測試網;ay%hs^^9e s| a

$}q ct%`(j8a0

g vkpui ^�},d0 * 各種分類的快取記憶體物件均可以使用這些計數器,包括特殊 sql、準備 sql、過程、觸發器等。51testing軟體測試網1^lt'l^(b.n8r"v

%d[ q,a| i9e0 有關更多資訊,請參見 sql server:buffer manager 物件和 sql server:cache manager 物件。51testing軟體測試網io;c4g$x

m%u1lq%s(g:zh0 sql_statement 限制51testing軟體測試網 ]`2d7@j&/vwmr+/}7wo-_t0 truncate table51testing軟體測試網/z-/hdj�`#j

51testing軟體測試網b^p-d0r�l�e4g

?!s9itd?/j0 update statistics51testing軟體測試網^3h6p'f;migh*m

許可權51testing軟體測試網6eti2vqk"`4d3p

create procedure 的許可權預設授予 sysadmin 固定伺服器角色成員和 db_owner 和 db_ddladmin 固定資料庫角色成員。sysadmin 固定伺服器角色成員和 db_owner 固定資料庫角色成員可以將 create procedure 許可權轉讓給其他使用者。執行儲存過程的許可權授予過程的所有者,該所有者可以為其它資料庫使用者設定執行許可權。

sog*a w1o#]0n+].irf b0

51testing軟體測試網1|3ib(f)hj 示例

1vr,c+xx]0 a. 使用帶有複雜 select 語句的簡單過程51testing軟體測試網h5a,p5cy gv

下面的儲存過程從四個表的聯接中返回所有作者(提供了姓名)、出版的書籍以及出版社。該儲存過程不使用任何引數。51testing軟體測試網ccjs9rx c z

-y�[rn)qv0 use pubs51testing軟體測試網0awx:h+a!u

if exists (select name from sysobjects51testing軟體測試網dlx p1u

where name = 'au_info_all' and type = 'p')51testing軟體測試網x!ml,i zd[[

drop procedure au_info_all51testing軟體測試網2xk5q*mpi,oa gq'o

gof+ib�kv"xm/h m0 create procedure au_info_all

ss1s"dwt@'v$a0 as

q}+x pgo[0 select au_lname, au_fname, title, pub_name51testing軟體測試網bc:zqk h%f0ir _'v

from authors a inner join titleauthor ta51testing軟體測試網#ueh u`

on a.au_id = ta.au_id inner join titles t51testing軟體測試網f"bz+bl/z[

on t.title_id = ta.title_id inner join publishers p51testing軟體測試網'un%l1ac+_z:d

on t.pub_id = p.pub_id51testing軟體測試網)^}:bkio

go4c%` k.pz2s5~!{&a!y i0

51testing軟體測試網3jq+w2m9d)yi

au_info_all 儲存過程可以通過以下方法執行:

j]h'vs-q-y0

e5r0tw#tb#x n*u0 execute au_info_all

ul,~)yg0 -- or51testing軟體測試網p6k*/:v&rki~2j4q

exec au_info_all

t6w@zg{p?lx0

51testing軟體測試網o7e lb|e2u

如果該過程是批處理中的第一條語句,則可使用:51testing軟體測試網t1xy8aq�/

51testing軟體測試網 wy5i7rc

au_info_all

n5^r7k ^ o"{0

%jb't//3v0 b. 使用帶有引數的簡單過程51testing軟體測試網m8|y#dbrob

下面的儲存過程從四個表的聯接中只返回指定的作者(提供了姓名)、出版的書籍以及出版社。該儲存過程接受與傳遞的引數精確匹配的值。51testing軟體測試網o js o2wr

v*n|mz$x(d?0 use pubs

sql server 允許建立的儲存過程引用尚不存在的物件。在建立時,只進行語法檢查。執行時,如果快取記憶體中尚無有效的計畫,則編譯儲存過程以生成執行計畫。只有在編譯過 程中才解析儲存過程中引用的所有物件。因此,如果語法正確的儲存過程引用了不存在的物件,則仍可以成功建立,但在執行時將失敗,因為所引用的物件不存在。 有關更多資訊,請參見延遲名稱解析和編譯。 51testing軟體測試網]&y

oracle 儲存過程基礎知識2

說明 在公升級過程中,sqlserver 利用儲存在 syscomments 中的加密注釋來重新建立加密過程。for replication 指定不能在訂閱伺服器上執行為複製建立的儲存過程。使用 for replication 選項建立的儲存過程可用作儲存過程篩選,且只能在複製過程中執行。本選項不能...

儲存過程基礎知識

1.1,儲存過程概念 sql sever將一些需要呼叫的固定操作編寫操作編寫為子程式,並集中以乙個儲存單元的形式儲存在儲存過程是一種重要的資料物件,它儲存於資料庫的伺服器中,儲存過程 可由應用程式通過execute語句呼叫執行,具有較強的程式設計功能。1.2,儲存過程特點 在sql server中使...

oracle資料庫儲存過程基礎知識

工具pl sql developer 1.建立資料庫儲存過程 程式視窗 program window 1 無引數的儲存過程 create or replace procedure 儲存過程名 is as declare 宣告變數的標識 可以寫也可以不寫 變數名 變數型別 值範圍 變數名 變數型別 值...