zoukankan      html  css  js  c++  java
  • sqlserver 存储过程 增加

    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
    */
  • 相关阅读:
    WPF:linq
    WPF:ListView数据绑定及Style
    WPF: DatePicker
    多线程16--单例--懒汉模式和静态内部类形
    多线程15--线程本地变量ThreadLocal
    多线程14---模拟消息队列
    多线程13--多线程并发购票--低效的线程安全的车票容器
    多线程10--线程间实时通信--耗性能的轮询
    自定义video的controls(播放暂停按钮、进度条、快进快退等)
    js+css 写出 简单2048游戏
  • 原文地址:https://www.cnblogs.com/zouke1220/p/7459323.html
Copyright © 2011-2022 走看看