CREATE PROCEDURE [dbo].[InsertMessage]( @strTable varchar(50), --表名 @strValues nvarchar(1000), --要插入的数据(用英文逗号分隔),如果是字符串类型,需加单引号 @only_field varchar(20)=NULL, --唯一性字段(列名) @only_value varchar(20)=NULL, --唯一性字段值 @msg nvarchar(50)=NULL --错误消息 ) as BEGIN SET NOCOUNT ON; declare @sqlString varchar(5000); IF @only_field is not null begin declare @p int; --查询唯一性结果 declare @sql nvarchar(1000); --拼接查询sql字串 set @sql='SELECT @p=count(1) FROM ' +@strTable+' WHERE ' +@only_field+'='+@only_value; exec sp_executesql @sql,N'@p AS int OUTPUT',@p OUTPUT if @p > 0 begin raiserror(@msg ,16,1) return end else begin set @sqlString = 'insert into '+@strTable+' values ('+@strValues+')'; exec(@sqlString); end end ELSE begin set @sqlString = 'insert into '+@strTable+' values ('+@strValues+')'; exec(@sqlString); end END --execute [dbo].[InsertMessage] 'base._Member',"0,2,getdate(),0,1,'4445','654321','654321',N'邹柯00'",'AcctNbr','4445',N'会员卡号已存在,不能重复添加!' --execute [dbo].[InsertMessage] 'base._Member',"0,2,getdate(),0,1,'4445','654321','654321',N'邹柯00'",NULL,NULL,NULL
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- 邹柯 Create PROCEDURE CollegeAdd ( @username NVarChar(10) ,@cardid VarChar(30) ,@age int ,@sex Char(1) ,@image_path VarChar(50) ,@job_base_id int ,@level_base_id int ,@certificateid VarChar(15) ,@certificate_path VarChar(50) ,@BeginTime DateTime=null ,@EndTime DateTime=null ,@userid int out ,@ceid int out ) WITH ENCRYPTION AS BEGIN SET NOCOUNT ON; SET XACT_ABORT ON; SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; BEGIN TRY BEGIN TRAN; -- Add Tutor insert into Tutor ( Name, IdentityCard, Age, Gender, Photo) values (@username, @cardid, @age, @sex, @image_path); -- 获取自增ID select @userid = scope_identity(); -- Add Certificate insert into Certificate ( TutorId, JobId, LevelId, BeginTime,EndTime,Id, ImageUrl) values (@userid, @job_base_id, @level_base_id,@BeginTime, @EndTime,@certificateid, @certificate_path); -- 获取自增ID select @ceid = scope_identity(); COMMIT TRAN; END TRY BEGIN CATCH ROLLBACK TRAN; throw; END CATCH END /* USE [GmkCollege] GO DECLARE @return_value int, @userid int, @ceid int EXEC @return_value = [dbo].[CollegeAdd] @username = '测试8', @cardid = '测试8', @age = 99, @sex = '女', @image_path = '测试8', @job_base_id = 2, @level_base_id = 2, @certificateid = '测试8', @certificate_path = '测试8', @BeginTime='2016-06-06', @EndTime='2017-01-01', @userid = @userid OUTPUT, @ceid = @ceid OUTPUT SELECT @userid as N'@userid', @ceid as N'@ceid' SELECT 'Return Value' = @return_value GO */
-- 邹柯 Create PROCEDURE AddSignUpInfo ( --UserInfo @Name NVarChar(18)=null ,@IdCard VarChar(18)=null ,@Gender Char(2)=null ,@Area NVarChar(30)=null ,@Nation NVarChar(15)=null ,@Hobby NVarChar(50)=null ,@BirthDate DateTime=null ,@Phone VarChar(11)=null ,@TrainStatus Char(2)=null --UserTransInfo ,@TransOrganizate NVarChar(30)=null ,@Certicate NVarChar(30)=null ,@StartTime DateTime=null ,@EndTime DateTime=null ,@Expectation NVarChar(300)=null ,@TransContent NVarChar(300)=null --UserPayInfo ,@OrderNo Varchar(30)=null ,@Type Int=1 ,@Amount Int=null ,@Currency Int=2 ,@Method Int=1 ,@Status Int=1 ) WITH ENCRYPTION AS BEGIN SET NOCOUNT ON; SET XACT_ABORT ON; SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; BEGIN TRY BEGIN TRAN; --声明用户ID变量 declare @UID int=null; declare @INFO1 int=null; declare @INFO2 int=null; declare @INFO3 int=null; --根据身份证号获取用户ID SELECT @UID=ID FROM UserCaptcha WHERE IdCard=@IdCard; --根据用户ID查询该用户之前是否已添加过报名信息--只是未支付成功或其他原因导致这条信息无效 SELECT @INFO1=Count(1) FROM UserInfo WHERE UID=@UID; SELECT @INFO2=Count(1) FROM UserTransInfo WHERE UID=@UID; SELECT @INFO3=Count(1) FROM UserPayInfo WHERE UID=@UID; if @INFO1 = 0 begin -- Add UserInfo insert into UserInfo( [UId] ,[Name] ,[Gender] ,[Nation] ,[Area] ,[Hobby] ,[BirthDate] ,[Phone] ,[TrainStatus] ) values( @UID ,@Name ,@Gender ,@Nation ,@Area ,@Hobby ,@BirthDate ,@Phone ,@TrainStatus ) end else begin -- Update UserInfo Update UserInfo SET [Name]=@Name ,[Gender]=@Gender ,[Nation]=@Nation ,[Area]=@Area ,[Hobby]=@Hobby ,[BirthDate]=@BirthDate ,[Phone]=@Phone ,[TrainStatus]=@TrainStatus Where UId=@UID end if @INFO2 = 0 begin -- Add UserTransInfo insert into UserTransInfo( [UId] ,[TransOrganizate] ,[Certicate] ,[TransContent] ,[Expectation] ,[StartTime] ,[EndTime] ) values( @UID ,@TransOrganizate ,@Certicate ,@TransContent ,@Expectation ,@StartTime ,@EndTime ); end else begin -- Update UserTransInfo Update UserTransInfo SET [TransOrganizate]=@TransOrganizate ,[Certicate]=@Certicate ,[TransContent]=@TransContent ,[Expectation]=@Expectation ,[StartTime]=@StartTime ,[EndTime]=@EndTime Where UId=@UID end if @INFO3 = 0 begin -- Add UserPayInfo insert into UserPayInfo( [UId] ,[OrderNo] ,[Type] ,[Amount] ,[Currency] ,[Method] ,[Status] ) values( @UID ,@OrderNo ,@Type ,@Amount ,@Currency ,@Method ,@Status ); end else begin -- Update UserPayInfo Update UserPayInfo SET [OrderNo]=@OrderNo ,[Type]=@Type ,[Amount]=@Amount ,[Currency]=@Currency ,[Method]=@Method ,[Status]=@Status Where UId=@UID end COMMIT TRAN; END TRY BEGIN CATCH ROLLBACK TRAN; throw; END CATCH END /* USE [GmkCollege] GO DECLARE @return_value int EXEC @return_value = [dbo].[AddSignUpInfo] @Name = 'zouke', @IdCard = '111111', @Gender = 1, @Area = 'zzzzzzzz', @Nation = '汉族', @Hobby = '足球、篮球呢', @BirthDate = '2016-01-01', @Phone = '18761939022', @TrainStatus = 1, @TransOrganizate = 'GMK', @Certicate = '理疗师', @StartTime = '2011-01-01', @EndTime = '2012-01-01', @Expectation = 'cccccccc', @TransContent = 'ddddddd', @OrderNo="2222222222", @Type=1, @Amount=100, @Currency=2, @Method=1, @Status=1, SELECT 'Return Value' = @return_value GO */