sqlserver存儲過程入門

sqlserver存儲過程入門

1. 輸入/輸出參數定義

@object_name varchar(50)  //定義一個varchar類型的輸入參數
@object_index int
@isUpdate int  =0  output //定義一個輸出參數
複製代碼

2.遊標使用步驟

一、定義遊標
DECLARE cur_objsName CURSOR for select name from tb_user;
二、打開遊標
OPEN cur_objsName;
三、提取遊標數據,進行業務處理
while @@fetch_status = 0   --若是上一次操做成功則繼續循環  
	begin
		update tb_user set calss='三年級5班' 	
		FETCH  NEXT FROM cur_objsName INTO 	
	end
四、關閉遊標
CLOSE cur_objsName;
五、釋放遊標
deallocate cur_objsName;
複製代碼

3.簡單示例

生產環境中會須要對軟件的版本進行升級,會相應的升級數據庫。當老版本軟件退役,新版本軟件上線時。會根據數據表結構的更新來進行數據遷移。
示例:根據輸入對象名稱,和列名,判斷表對象結構是否進行了更新
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	判斷表對象結構是否進行了更新
-- =============================================
alter PROCEDURE [dbo].[getIsUpdate]
	@object_name varchar(50),
	@contrast_column_name varchar(50),
	@isUpdate int  =0  output           -- 1= 是, 0=否
AS 
BEGIN
	-----------定義遊標----------------
	DECLARE cur_objsName CURSOR for select name from sys.all_columns where object_id = object_id(@object_name);
	declare @column_name varchar(50)  
-----------打開遊標----------------
	OPEN cur_objsName;
-----------------從遊標裏取出數據賦值到咱們剛纔聲明的變量中(移動遊標指向到第一條數據,提取第一條數據存放在變量中)    
	FETCH NEXT FROM cur_objsName INTO @column_name   
--判斷遊標的狀態    
-- 0 fetch語句成功        
---1 fetch語句失敗或此行不在結果集中        
---2 被提取的行不存在  
	while @@fetch_status = 0   --若是上一次操做成功則繼續循環  
		begin
			if @contrast_column_name=@column_name
				set @isUpdate =1
			FETCH  NEXT FROM cur_objsName INTO @column_name	
		end
END
-----------關閉遊標----------------
	CLOSE cur_objsName;
-----------釋放遊標----------------
	deallocate cur_objsName;
複製代碼

3.1SQLserver2005企業管理器中執行存儲過程

一、執行存儲過程

二、填寫輸入參數

三、查看查詢結果

4.powerbuilder中調用存儲過程

int returnValue
Declare stu_getIsUpdate Procedure For getIsUpdate // 定義過程調用
@object_name='tb_user',  @contrast_column_name='faction',   
@isUpdate=0 output;
Execute stu_getIsUpdate ;// 執行過程,這裏是不須要其餘參數的

If SQLCA.SQLCode <> 0 Then // 調用過程出現錯誤處理
	messagebox('提示','數據庫升級時出現錯誤:getIsUpdate........')
	return
End If
Fetch stu_getIsUpdate Into :returnValue;
// 獲取出參值,也就是OUT的變量,若是沒有out類型的變量,這句也就不須要了
If SQLCA.SQLCode <> 0 Then // 獲取數據出現錯誤處理
	messagebox('提示','數據庫升級時出現錯誤:getIsUpdate........')
	return
End If
Close stu_getIsUpdate ;	
if  returnValue=0 then
	//根據存儲過程返回值,來執行相應業務邏輯
end if
複製代碼

5.使用Visual Studio 進行存儲過程的調試

一、打開visual studio 2013,單擊「視圖」,選擇「服務器資源管理器」。sql

二、右鍵單擊「數據鏈接」,選擇「添加鏈接」數據庫

三、在彈出的窗口中選擇「Microsoft SQL Server」或者「Microsoft SQL Server數據庫文件」服務器

四、在第三步基礎上進行配置,這一步根據第三步選擇選項不一樣,進行配置的內容不一樣,但都比較簡單,不作描述。微信

五、添加鏈接完成以後,點擊「存儲過程」,選擇你要調試的存儲過程,右鍵單擊,選擇「執行」,在彈出窗口中輸入相應參數(若是有的話)sqlserver

六、在打開的選項卡窗口中點擊綠色按鈕右邊的下拉按鈕,選擇「使用調試器執行」,開始調試。fetch

七、調試時,能夠按F11或者F10進行步進或者過程進,進行調試,調試時把鼠標放到變量上便可查看變量的值ui

簡單示例

5.歡迎關注微信公衆號

相關文章
相關標籤/搜索