create proc test ------創(chuàng)建存儲(chǔ)過(guò)程 test

公司主營(yíng)業(yè)務(wù):成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。成都創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。成都創(chuàng)新互聯(lián)推出月湖免費(fèi)做網(wǎng)站回饋大家。
@a int =‘’-----------創(chuàng)建變數(shù) 有的存儲(chǔ)過(guò)程不需要變數(shù),這個(gè)看個(gè)人所需要
as ---------------執(zhí)行以下語(yǔ)句
select * from table where a=@a -------------------後面寫(xiě)自己需要的語(yǔ)句
go
--------exec test ‘1’----------執(zhí)行存儲(chǔ)過(guò)程
1、 創(chuàng)建語(yǔ)法
create?proc?|?procedure?pro_name
[{@參數(shù)數(shù)據(jù)類型}?[=默認(rèn)值]?[output],
{@參數(shù)數(shù)據(jù)類型}?[=默認(rèn)值]?[output],
....
]
as
SQL_statements
2、 創(chuàng)建不帶參數(shù)存儲(chǔ)過(guò)程
--創(chuàng)建存儲(chǔ)過(guò)程
if?(exists?(select?*?from?sys.objects?where?name?=?'proc_get_student'))
drop?proc?proc_get_student
go
create?proc?proc_get_student
as
select?*?from?student;
--調(diào)用、執(zhí)行存儲(chǔ)過(guò)程
exec?proc_get_student;
3、 修改存儲(chǔ)過(guò)程
--修改存儲(chǔ)過(guò)程
alter?proc?proc_get_student
as
select?*?from?student;
4、 帶參存儲(chǔ)過(guò)程
--帶參存儲(chǔ)過(guò)程
if?(object_id('proc_find_stu',?'P')?is?not?null)
drop?proc?proc_find_stu
go
create?proc?proc_find_stu(@startId?int,?@endId?int)
as
select?*?from?student?where?id?between?@startId?and?@endId
go
exec?proc_find_stu?2,?4;
5、 帶通配符參數(shù)存儲(chǔ)過(guò)程
--帶通配符參數(shù)存儲(chǔ)過(guò)程
if?(object_id('proc_findStudentByName',?'P')?is?not?null)
drop?proc?proc_findStudentByName
go
create?proc?proc_findStudentByName(@name?varchar(20)?=?'%j%',?@nextName?varchar(20)?=?'%')
as
select?*?from?student?where?name?like?@name?and?name?like?@nextName;
go
exec?proc_findStudentByName;exec?proc_findStudentByName?'%o%',?'t%';
擴(kuò)展資料:
SQL存儲(chǔ)過(guò)程優(yōu)點(diǎn):
1、重復(fù)使用。存儲(chǔ)過(guò)程可以重復(fù)使用,從而可以減少數(shù)據(jù)庫(kù)開(kāi)發(fā)人員的工作量。
2、減少網(wǎng)絡(luò)流量。存儲(chǔ)過(guò)程位于服務(wù)器上,調(diào)用的時(shí)候只需要傳遞存儲(chǔ)過(guò)程的名稱以及參數(shù)就可以了,因此降低了網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量。
3、安全性。參數(shù)化的存儲(chǔ)過(guò)程可以防止SQL注入式攻擊,而且可以將Grant、Deny以及Revoke權(quán)限應(yīng)用于存儲(chǔ)過(guò)程。
參考資料來(lái)源:百度百科—存儲(chǔ)過(guò)程
朋友,你無(wú)需考慮這些,這只是語(yǔ)言設(shè)計(jì)者在語(yǔ)法上的設(shè)定而已,作為使用者的我們只需掌握set的用法即可,如果你一定要詢問(wèn)為何語(yǔ)言設(shè)計(jì)的那些專家們用set,那你不妨參考一下set在英語(yǔ)中的解釋,set即是設(shè)置的意思,這也符合使用它時(shí)的語(yǔ)境。
sqlserver中用set賦值,而在oracle中則可以看到“select sal into sal_p from emp”這的語(yǔ)句,你注意到了嗎?同樣是賦值,兩種語(yǔ)言分別采用了set和select,這或許可以證明你的猜想,set與select的淵源可見(jiàn)一斑。
祝你成功
sqlserver存儲(chǔ)過(guò)程的基本操作:
一、創(chuàng)建存儲(chǔ)過(guò)程
1、語(yǔ)法格式:
create proc | procedure pro_name
[{@參數(shù)數(shù)據(jù)類型} [=默認(rèn)值] [output],
{@參數(shù)數(shù)據(jù)類型} [=默認(rèn)值] [output],
....
]
as
sql_statements以上是最基本語(yǔ)法,舉個(gè)簡(jiǎn)單的例子:
create proc p_test
as
select retu = 1存儲(chǔ)過(guò)程返回一個(gè)結(jié)果集:1
2、執(zhí)行存儲(chǔ)過(guò)程
execute procedure_name '' --存儲(chǔ)過(guò)程如果有參數(shù),后面加參數(shù)格式為:@參數(shù)名=value,也可直接為參數(shù)值value例子調(diào)用結(jié)果:
3、刪除存儲(chǔ)過(guò)程
drop procedure procedure_name --在存儲(chǔ)過(guò)程中能調(diào)用另外一個(gè)存儲(chǔ)過(guò)程,而不能刪除另外一個(gè)存儲(chǔ)過(guò)程
q 定義存儲(chǔ)過(guò)程的語(yǔ)法
CREATE PROC[EDURE] 存儲(chǔ)過(guò)程名
@參數(shù)1 數(shù)據(jù)類型 = 默認(rèn)值,
…… ,
@參數(shù)n 數(shù)據(jù)類型 OUTPUT
AS
SQL語(yǔ)句
GO
q 和C語(yǔ)言的函數(shù)一樣,參數(shù)可選
q 參數(shù)分為輸入?yún)?shù)、輸出參數(shù)
q 輸入?yún)?shù)允許有默認(rèn)值
創(chuàng)建不帶參數(shù)的存儲(chǔ)過(guò)程
CREATE PROCEDURE proc_stu /*proc_stu為存儲(chǔ)過(guò)程的名稱*/
AS
DECLARE @writtenAvg float,@labAvg float /*筆試平均分和機(jī)試平均分變量 */
SELECT @writtenAvg=AVG(writtenExam),
@labAvg=AVG(labExam) FROM stuMarks
print '筆試平均分:'+convert(varchar(5),@writtenAvg)
print '機(jī)試平均分:'+convert(varchar(5),@labAvg)
IF (@writtenAvg70 AND @labAvg70)
print '本班考試成績(jī):優(yōu)秀' /*顯示考試成績(jī)的等級(jí) */
ELSE
print '本班考試成績(jī):較差'
print '--------------------------------------------------'
print ' 參加本次考試沒(méi)有通過(guò)的學(xué)員:'
SELECT stuName,stuInfo.stuNo,writtenExam,labExam /*顯示未通過(guò)的學(xué)員 */
FROM stuInfo INNER JOIN stuMarks ON
stuInfo.stuNo=stuMarks.stuNo
WHERE writtenExam60 OR labExam60
GO
調(diào)用存儲(chǔ)過(guò)程
q EXECUTE(執(zhí)行)語(yǔ)句用來(lái)調(diào)用存儲(chǔ)過(guò)程
q 調(diào)用的語(yǔ)法
EXEC 過(guò)程名 [參數(shù)]
創(chuàng)建帶參數(shù)的存儲(chǔ)過(guò)程
q 存儲(chǔ)過(guò)程的參數(shù)分兩種:
q 輸入?yún)?shù)
q 輸出參數(shù)
q 輸入?yún)?shù):
用于向存儲(chǔ)過(guò)程傳入值,類似C語(yǔ)言的按值傳遞;
q 輸出參數(shù):
用于在調(diào)用存儲(chǔ)過(guò)程后,
返回結(jié)果,類似C語(yǔ)言的
按引用傳遞;
第一步:點(diǎn)擊數(shù)據(jù)庫(kù)下的“可編程性”,選擇“存儲(chǔ)過(guò)程”,點(diǎn)擊鼠標(biāo)右鍵,選擇“新建存儲(chǔ)過(guò)程”
第二步:在create PROCEDURE 后 輸入存儲(chǔ)過(guò)程的名字,緊跟著的就是定義存儲(chǔ)過(guò)程的參數(shù),接下來(lái)就可以去編寫(xiě)自己所需要組裝的存儲(chǔ)過(guò)程語(yǔ)句了
第三步: 編譯存儲(chǔ)過(guò)程,在工具欄上按下執(zhí)行按鈕,如果沒(méi)有錯(cuò)誤,就編寫(xiě)成功了。
第四步:調(diào)用:在sqlserver的語(yǔ)句查詢框中,輸入exec 存儲(chǔ)過(guò)程名 參數(shù),執(zhí)行就可以了。
基本語(yǔ)法格式如下:中括號(hào)帶的是可選項(xiàng)
create proc | procedure pro_name
[{@參數(shù)數(shù)據(jù)類型} [=默認(rèn)值] [output],
{@參數(shù)數(shù)據(jù)類型} [=默認(rèn)值] [output],
....
]
as
begin
SQL_statements
--業(yè)務(wù)處理
end
網(wǎng)站欄目:sqlserver存儲(chǔ)過(guò)程語(yǔ)法,sql中存儲(chǔ)過(guò)程的用法
本文鏈接:http://chinadenli.net/article9/dsehioh.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、網(wǎng)站設(shè)計(jì)、域名注冊(cè)、商城網(wǎng)站、云服務(wù)器、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)