二、
儲存過程
1.建立
語法create proc [ edure ] procedure_name [ ; number ]
[ [ varying ] [ = default ] [ output ]
] [ ,...n ]
[ with
] [ for replication ]
as sql_statement [ ...n ]
eg:無引數
create
proc
sayhello
asbegin
'hello world!'
endexec
sayhello
有引數create
procedure
sayhello1
@username
varchar
(10)
asbegin
'hello'
+@username
+'!'
endexec
sayhello1
'baby'
有輸出create
proc
sayhello2
@username
varchar
(10),
@outval
varchar
(10)
output
asbegin
'hello '
+@username
+@outval
+'!'
set@outval
='haha'
endexec
sayhello2
'aa'
,'cc'
declare
@rc
int,
@output
varchar
(10);
begin
set@output
='123'
;exec
@rc=
sayhello2
'a',
@output
output
@rc;
'output = '
+@output
;end
預設值create
proc
sayhello3
@username
varchar
(10),
@val1
varchar
(20)
='hihao'
,@val2
varchar
(20)
='welcome!'
asbegin
@username+''
+@val1+''
+@val2
+'!'
;end
declare
@rcint
;begin
exec
@rc=
sayhello3
'hll'
@rc;
exec
@rc=
sayhello3
'hll2'
,' goodnight '
@rc;
exec
@rc=
sayhello3
'hll3'
,' goodnight '
,' bye'
@rc;
end指定引數名呼叫
declare
@rcint
;begin
exec
@rc=
sayhello3
'qq'
@rc;
exec
@rc=
sayhello3
'qq2'
,@val1
=' goodmorning '
@rc;
exec
@rc=
sayhello3
'qq3'
,@val1
=' goodmorning '
,@val2
=' haha'
@rc;
exec
@rc=
sayhello3
'qq3'
,@val2
=' haha'
@rc;
end返回結果集
create
proc
resultset
asbegin
select
top(4)
*from
teacher
;end
begin
declare
@rc
int;
exec
@rc=
resultset
@rc;
end2.
修改alter
proc
sayhello
asbegin
'hello world2!'
endexec
sayhello
3.刪除
drop proc proc_name
4.檢視
檢視資料庫已有儲存過程
use jxcsoftware
go select * from sysobjects where xtype='p'
檢視單個儲存過程
exec sp_helptext '
儲存過程名
'
觸發器,儲存過程,函式區別
觸發器是特殊的儲存過程,儲存過程需要程式呼叫,而觸發器會自動執行 你所說的函式是自定義函式吧,函式是根據輸入產生輸出,自定義只不過輸入輸出的關係由使用者來定義。在什麼時候用觸發器?要求系統根據某些操作自動完成相關任務,比如,根據買掉的產品的輸入數量自動扣除該產品的庫存量。什麼時候用儲存過程?儲存過程...
Oracle儲存過程,函式,觸發器
一 儲存過程的定義 1 過程 多次編譯 多次執行 過程實現計算器 declare p1 number 1 p2 number 2 sign varchar2 3 begin if sign then syso p1 p2 elsif sign then syso p1 p2 elsif sign t...
觸發器 函式或儲存過程
觸發器是一種特殊型別的儲存過程,主要是通過事件進行觸發被自動呼叫執行的。而普通儲存過程可以通過儲存過程的名稱被呼叫。觸發器對錶進行插入 更新 刪除的時候會自動執行的特殊儲存過程。觸發器一般用在check約束更加複雜的約束上面。觸發器和普通的儲存過程的區別是 觸發器是當對某乙個表進行操作。諸如 upd...