1. 程式人生 > >儲存過程中事務try catch 例子

儲存過程中事務try catch 例子

CREATE PROCEDURE [dbo].[ProcAccountManagerAssignCompany]
	--使用者賬號基本資訊表中所需欄位
	@UserName NVARCHAR(50),    --使用者登入的賬戶名稱
	@UserPwd NVARCHAR(50),    --使用者登入的密碼
	@AssignUserID INT,    --分配此使用者的管理員ID
	@ParentId INT,    --父ID
	
	--企業基本資訊表中所需欄位
	@AddUser INT,   --新增者ID
	@Name NVARCHAR(80),	--公司名稱
	@Address NVARCHAR(80),--公司地址
	@Tel VARCHAR(15),--聯絡電話
	@Email VARCHAR(50),--郵箱
	@PostCode VARCHAR(10)--郵政編碼
	
AS
BEGIN
	DECLARE @isExist INT,@isExistTwo INT,@CompanyExist INT,@FrameworkExist INT
	SET @isExist = 0 SET @isExistTwo = 0 SET @CompanyExist=0
	SELECT @isExist=COUNT(*) FROM UserAccountBasicInfo WHERE 
[email protected]
SELECT @isExistTwo=COUNT(*) FROM CompanyBasicInfo WHERE [email protected] SELECT @CompanyExist =COUNT(*) FROM CompanyBasicInfo WHERE [Name][email protected] IF @isExist > 0 SELECT -100 --返回 -100 說明使用者賬號基本資訊表中已存在使用者名稱 ELSE IF @isExistTwo>0 SELECT -200 --返回 -200 說明企業資訊表中使用者名稱已存在 ELSE IF @CompanyExist >0 SELECT -300 --返回 -300 說明企業名稱已經存在 ELSE -- 執行插入 BEGIN BEGIN TRAN BEGIN TRY --1.往UserAccountBasicInfo表中插入賬號資訊 INSERT INTO UserAccountBasicInfo ( [UserName], [UserPwd], [AssignUserID], [AssignTime], [LastUpdateTime], [IsDeleted], [ParentId] ) VALUES ( @UserName, @UserPwd, @AssignUserID, GETDATE(), GETDATE(), 0, @ParentId ) --2.往CompanyBasicInfo表中插入企業資訊 INSERT INTO CompanyBasicInfo ( [AdminUserName], [Name], [Address], [Tel], [Email], [PostCode], [IsDeleted], [AddTime], [AddUser], [UpdateTime], [UpdateUser] ) VALUES ( @UserName, @Name, @Address, @Tel, @Email, @PostCode, 0, GETDATE(), @AddUser, GETDATE(), @AddUser ) --3.往組織架構表中插入資料 DECLARE @CompanyId INT SELECT @CompanyId = IDENT_CURRENT( 'CompanyBasicInfo' ) INSERT INTO CompanyFramework ( [CompanyID], [Name], [ParentID], [IsDeleted] ) VALUES ( @CompanyID, @Name, 0, 0 ) COMMIT END TRY BEGIN CATCH ROLLBACK END CATCH END END

相關推薦

儲存過程事務try catch 例子

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

儲存過程使用事務try catch

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

spring事務——try{...}catch{...}事務不回滾的幾種處理方式

當希望在某個方法中新增事務時,我們常常在方法頭上新增@Transactional註解 @ResponseBody @RequestMapping(value = "/payment", method = RequestMethod.POST, produces = MediaType

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

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

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

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

SQLSERVER 儲存過程事務

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

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

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

儲存過程新增事務

--存在就刪除 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

oracle開發儲存過程,遊標,if判斷經典例子

1.簡單輸出 create or replace procedure t_xuanze(name in varchar) as tname varchar(10); begin dbms_output.put_line('this is error!'); end; (注

Java關於try{}catch{}丟擲異常的一個例子

之前對try{ }catch{ }沒有什麼瞭解知識知道有這麼個丟擲異常的方法,今天在寫一個簡單的判斷月份的程式碼時,突然想到了如果我輸入的是字串怎麼辦,於是就想到了用try丟擲異常, 在寫的時候出現個問題,就是我定義的Scanner物件必須是在try裡面定義它的型別,因為如

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

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

SQLServer 儲存過程使用事務

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

javatry-catch-finnal異常處理(學習筆記)

不堪 java sha highlight 抽取 最終 throwable 關鍵字 學習筆記 一、異常概述 異常:Exception,是在運行發生的不正常情況。 原始異常處理: if(條件) {   處理辦法1  處理辦法2  處理辦法3} if(條件) {   處理辦法

SQL儲存過程分頁

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

如何在儲存過程執行set命令  我來答

1.EXEC使用EXEC命令兩種用種執行儲存程另種執行態批處理所講都第二種用  面先使用EXEC演示例,程式碼1DECLARE @TableName VARCHAR(50),@Sql NVARCHAR (MAX),@OrderID INT;SET @TableName = 'Orders';SET @Orde

MySql儲存過程傳參和不傳參以及java呼叫程式碼

資料庫表結構 1.mysql不傳參寫儲存過程 create procedure product() -- product為儲存過程名稱 begin select * from book; end 呼叫此儲存過程為 CALL product

【轉載】postgresql儲存過程返回型別

前言 假如需要在pg上面寫儲存過程,那麼返回型別必定是一個疑問點。 一般而言,對於一個查詢語句,為了可以統一動態返回各種資料,我們是不會蠢到每一個儲存過程都額外編寫一個返回型別 譬如: (id,name,password) 之類的,所以在寫的時候肯定會考慮 setof record這個動

儲存過程一維陣列接受按分割符拆分的資料

declare -- Local variables here i integer; Lar_Input t_Arr.Arrname; --一維陣列接收 按分隔符拆分 begin -- Test statements here Pkg_n_Cst_String.Pr

sql在所有儲存過程查詢包含某字串的執行語句

直接在查詢分析器中執行以下程式碼就行: 方法一) select name from sysobjects o, syscomments s where o.id = s.id and text like '%test%' and o.xtype = 'P'   方法二)