sqlserver資料庫預存程序

來源:互聯網
上載者:User

標籤:exists   span   管理   objects   sql語句   --   sel   自訂   定義   

預存程序的分類
(1)系統預存程序
系統預存程序的名稱一般以“sp_”開頭
由SQLServer建立、管理和使用
存放在Resource資料庫中
類似java語言類庫中的方法
(2)擴充預存程序
擴充預存程序的名稱通常以“xp_”開頭
以DLL形式單獨存在
(3)使用者自訂預存程序
由使用者在自己的資料庫中建立的預存程序
類似java語言中使用者自訂的方法

//調用預存程序文法:
EXECUTE 過程名 [參數]

EXEC 過程名 [參數]

//定義預存程序的文法:
CREATE PROC[EDURE] 預存程序名
@參數1 資料類型 = 預設值 OUTPUT,
… … ,
@參數n 資料類型 = 預設值 OUTPUT
AS
SQL語句
GO

樣本1:
IF EXISTS (SELECT * FROM sysobjects WHERE name = ‘usp_grade_subject‘ )
DROP PROCEDURE usp_grade_subject
GO
/*---建立預存程序----*/
CREATE PROCEDURE usp_grade_subject
AS
SELECT GradeName,SubjectName,ClassHour FROM Grade
INNER JOIN Subject ON Grade.GradeId=Subject.GradeId
ORDER BY Subject.GradeId,SubjectNo
GO
/*---調用執行預存程序---*/
EXEC usp_grade_subject

 

 

樣本2 帶輸入參數的預存程序:
CREATE PROCEDURE usp_unpass
@subName varchar(50),
@score int
AS
DECLARE @date datetime --最近考試時間
DECLARE @subjectNo int --課程編號
SELECT @subjectNo=SubjectNo FROM Subject Where SubjectName = @subName
… …
SELECT StudentName,Student.StudentNo,StudentResult FROM Student
INNER JOIN Result ON Student.StudentNo = Result.StudentNo
WHERE StudentResult < @score AND ExamDate = @date AND [email protected]
GO

 

樣本3 建立帶參數預設值的預存程序:

CREATE PROCEDURE usp_unpass
@subName varchar(50),
@score int = 60
AS
… …
GO
調用帶參數預設值的預存程序:
EXEC usp_unpass ‘C# OOP‘--使用default代表預設值

 

樣本4 建立帶輸出參數的預存程序:

CREATE PROCEDURE usp_query_num
@UnPassNum INT OUTPUT,
@TotalNum INT OUTPUT,
@SubjectName NCHAR(10),
@Pass INT = 60 --推薦將預設參數放在最後
AS
DECLARE @date datetime
DECLARE @subjectNo int
… …
SELECT @UnPassNum = COUNT(*) FROM Result WHERE [email protected] AND [email protected] AND StudentResult<@Pass
SELECT @TotalNum = COUNT(*) FROM Result WHERE [email protected] AND [email protected]
GO
調用帶輸出參數的預存程序:
DECLARE @UnPassNum int
DECLARE @TotalNum int
EXEC usp_query_num @UnPassNum OUTPUT, @TotalNum OUTPUT,‘Java Logic‘
--調用時必須帶OUTPUT關鍵字 ,返回結果將分別存放在變數@unPassNum和@TotalNum中

sqlserver資料庫預存程序

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.