sqlserver存盤程序入門
1. 輸入/輸出引數定義
@object_name varchar(50) //定義一個varchar型別的輸入引數
@object_index int
@isUpdate int =0 output //定義一個輸出引數
2.游標使用步驟
1、定義游標
DECLARE cur_objsName CURSOR for select name from tb_user;
2、打開游標
OPEN cur_objsName;
3、提取游標資料,進行業務處理
while @@fetch_status = 0 --如果上一次操作成功則繼續回圈
begin
update tb_user set calss='三年級5班'
FETCH NEXT FROM cur_objsName INTO
end
4、關閉游標
CLOSE cur_objsName;
5、釋放游標
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企業管理器中執行存盤程序
1、執行存盤程序

2、填寫輸入引數

3、查看查詢結果

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=https://www.cnblogs.com/mark-0001/p/0 then
//根據存盤程序回傳值,來執行相應業務邏輯
end if
5.使用Visual Studio 進行存盤程序的除錯
1、打開visual studio 2013,單擊“視圖”,選擇“服務器資源管理器”,
2、右鍵單擊“資料連接”,選擇“添加連接”
3、在彈出的視窗中選擇“Microsoft SQL Server”或者“Microsoft SQL Server資料庫檔案”
4、在第三步基礎上進行配置,這一步根據第三步選擇選項不同,進行配置的內容不同,但都比較簡單,不做描述,
5、添加連接完成之后,點擊“存盤程序”,選擇你要除錯的存盤程序,右鍵單擊,選擇“執行”,在彈出視窗中輸入相應引數(如果有的話)
6、在打開的選項卡視窗中點擊綠色按鈕右邊的下拉按鈕,選擇“使用除錯器執行”,開始除錯,
7、除錯時,可以按F11或者F10進行步進或者程序進,進行除錯,除錯時把滑鼠放到變數上即可查看變數的值
簡單示例

5.歡迎關注微信公眾號

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/39239.html
標籤:SQL Server
