1. 程式人生 > >SQLServer 儲存過程中使用事務

SQLServer 儲存過程中使用事務

儲存過程SQL:
create proc *****
@GoodsId int,
@Number int,
@StockPrice money,
@SupplierId int,
@EmpId int,
@StockUnit varchar(50),
@StockDate datetime,
@TotalMoney money ,
@ActMoney money ,
@baseId int,
@Description nvarchar(255)
as
  declare @error int =0 --事務中操作的錯誤記錄
  --開啟事務
  begin transaction
    --實現進貨資訊的新增
    insert into StockInfo values(@GoodsId, @Number, @StockPrice, @SupplierId, @EmpId, @StockUnit, @StockDate, @TotalMoney, @ActMoney,DEFAULT,@Description, @baseId)
    set @
[email protected]
@ERROR --記錄有可能產生的錯誤號 --獲取當前進貨資訊的標識列 --判斷當前商品有沒有進貨記錄 if exists (select * from dbo.InventoryInfo where [email protected]) --說明記錄存在,直接修改庫存數量 begin update dbo.InventoryInfo set [email protected],[email protected] where [email protected] set @
[email protected]
@ERROR --記錄有可能產生的錯誤號 end else --這個商品從來沒有過進貨記錄,那麼就應該新增新的存在資訊 begin declare @GWarningNum int --此商品的預警數量 --獲取預警數量 set @GWarningNum=(select WaringNum from dbo.GoodsInfo where [email protected]) insert into dbo.InventoryInfo values(@GoodsId,@Number,@baseId,@GWarningNum,@TotalMoney,'第一次進貨',default) set @
[email protected]
@ERROR --記錄有可能產生的錯誤號 end --判斷事務的提交或者回滾 if(@error<>0) begin rollback transaction return -1 --設定操作結果錯誤標識 end else begin commit transaction return 1 --操作成功的標識 end go


相關推薦

SQLSERVER 儲存過程事務

1 CREATE PROCEDURE ProcedureNamme 2 AS 3 BEGIN 4 SET NOCOUNT ON; 5 6 BEGIN TRY---------------------開始捕捉異常 7 BEGIN TRAN-------

SQLServer 儲存過程使用事務

儲存過程SQL: create proc ***** @GoodsId int, @Number int, @StockPrice money, @SupplierId int, @EmpId in

sqlserver儲存過程利用遊標遍歷結果集簡單示例及查詢資料庫時間

本例項用的是sqlserver2005   在儲存過程中遍歷結果,和查詢資料庫中所有 儲存過程名稱 加以處理以文字形式輸出 原始碼: drop procedure findName create procedure findName--建立一個名為findName的儲存過

sqlserver 儲存過程使用臨時表到底會不會導致重編譯

曾經在網路上看到過,SqlServer的儲存過程中使用臨時表,會導致執行計劃無法重用, 執行時候會導致重編譯的這麼一個說法,自己私底下去做測試的時候,根據profile的跟蹤結果, 如果不是統計資訊變更導致導致的重編譯,單單是使用臨時表,並不會導致重編譯, 但是對於

儲存過程事務try catch 例子

CREATE PROCEDURE [dbo].[ProcAccountManagerAssignCompany] --使用者賬號基本資訊表中所需欄位 @UserName NVARCHAR(50), --使用者登入的賬戶名稱 @UserPwd NVARCHAR(5

sqlserver儲存過程的迴圈

用遊標,和WHILE可以遍歷您的查詢中的每一條記錄並將要求的欄位傳給變數進行相應的處理 DECLARE @A1 VARCHAR(10), @A2 VARCHAR(10), @A3 INT DECLARE YOUCURNAME CURSOR FOR SELECT A1,A2,A3 FROM YOUT

SqlServer檢視、儲存過程事務的使用。

前言 熟悉SqlServer中檢視、儲存過程、事務的使用會在操作資料時帶來更大的方便。 正文 檢視-VIEW VIEW介紹 定義: 檢視(VIEW)虛擬表,一般是不儲存資料的,但是Sqlserver的索引檢視例外(儲存資料)

[儲存過程]事務(rollback)回滾

在編寫SQL Server 事務相關的儲存過程程式碼時,經常看到下面這樣的寫法: begin tran    update statement 1 ...    update statement 2 ...    delete statement 3 ... 

Oracle 儲存過程 如何使用事務Transaction 自主事務 自治事務

  Oracle基礎 儲存過程和事務 一、事務和儲存過程   在儲存過程中如何使用事務。當需要在儲存過程中同時執行多條新增、修改、刪除SQL語句時,為了保證資料完整性,我們需要使用事務。使用方式和在PL-SQL中非常相似,但也有一些區別。   --帶事務的儲存過程 C

儲存過程新增事務

--存在就刪除 IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[NAME]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo

資料庫儲存過程事務 jfinal呼叫儲存過程事務

mysql DELIMITER $$ CREATE PROCEDURE `student`.`ceshi`(n INT,j CHAR(1)) BEGIN IF j = 'h' THEN SELECT * FROM blog

"伺服器無法繼續該事務 3400000006"錯誤原因--JAVA呼叫SQLSERVER儲存過程過程發生異常內部事務未提交

    通過JAVA呼叫SQLSERVER儲存過程時,儲存過程內部發生了型別轉換異常,在型別轉換異常發生之前已經將事務打開了,並且在型別轉換那一行沒有采用像如下錯誤處理:     if @@error<>0 then         goto err     e

SQLSERVER儲存過程基本語法(

五、遊標 declare @ID int declare @Oid int declare @Login varchar ( 50) --定義一個遊標 declare user_cur cursor for select ID, Oid,[Login] from ST_Us

SQLSERVER儲存過程查詢資料表某列存在空值

CREATE PROCEDURE [dbo].[PRO_CHK_COLUMNS_VALUES] -- Add the parameters for the stored procedure here @TableName nvarchar(50) , @colum

儲存過程簡單事務書寫方法

每一次Begin Transaction都會引起@@TranCount加1。而每一次Commit Transaction都會使@@TranCount減1,而RollBack Transaction會回滾所有的巢狀事務包括已經提交的事務和未提交的事務,而使@@TranCoun

SQLserver儲存過程建立函式,建立檢視

alter PROCEDURE usp_sumgoods(@supplierid VARCHAR(50)) as BEGIN if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GetM

SQLServer儲存過程,使用IN函式

在儲存過程中使用IN函式,傳入多個引數時,會有問題,三種解決方案: 新增函式: create FUNCTION [dbo].[Split2] ( @RowData varchar(max

基於C#的類SqlCommand物件呼叫SQLServer儲存過程時,儲存過程執行成功,但是物件方法ExecuteNonQuery()返回-1

問題如題。 【下面是一個例子】 1、儲存過程完成的功能是:插入insert一條記錄,相同主鍵的記錄存在時執行更新update的操作。儲存過程正常執行的返回值是1.(不過本文提到的問題和這個返回值沒關係。) 2、在另一個.cs檔案中使用 SqlCommand物件 呼叫方法Ex

儲存過程使用事務和try catch

一、儲存過程中使用事務的簡單語法       在儲存過程中使用事務時非常重要的,使用資料可以保持資料的關聯完整性,在Sql server儲存過程中使用事務也很簡單,用一個例子來說明它的語法格式: 程式碼 : Create Procedure MyProcedure

SQL儲存過程分頁

</pre><pre name="code" class="sql">ALTER proc [dbo].[GetGoodsLsit] ----分頁條件 @StartIndex varchar(20), @PageSize varchar(20), ----排序條件