sqlserver 存储过程 增加
CREATE PROCEDURE [dbo].[InsertMessage](
@strTable varchar(), --表名
@strValues nvarchar(), --要插入的数据(用英文逗号分隔),如果是字符串类型,需加单引号
@only_field varchar()=NULL, --唯一性字段(列名)
@only_value varchar()=NULL, --唯一性字段值
@msg nvarchar()=NULL --错误消息
)
as
BEGIN SET NOCOUNT ON;
declare @sqlString varchar(); IF @only_field is not null
begin
declare @p int; --查询唯一性结果
declare @sql nvarchar(); --拼接查询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 >
begin
raiserror(@msg ,,)
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','',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()
,@cardid VarChar()
,@age int
,@sex Char()
,@image_path VarChar()
,@job_base_id int
,@level_base_id int
,@certificateid VarChar()
,@certificate_path VarChar()
,@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()=null
,@IdCard VarChar()=null
,@Gender Char()=null
,@Area NVarChar()=null
,@Nation NVarChar()=null
,@Hobby NVarChar()=null
,@BirthDate DateTime=null
,@Phone VarChar()=null
,@TrainStatus Char()=null
--UserTransInfo
,@TransOrganizate NVarChar()=null
,@Certicate NVarChar()=null
,@StartTime DateTime=null
,@EndTime DateTime=null
,@Expectation NVarChar()=null
,@TransContent NVarChar()=null
--UserPayInfo
,@OrderNo Varchar()=null
,@Type Int=
,@Amount Int=null
,@Currency Int=
,@Method Int=
,@Status Int=
)
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() FROM UserInfo WHERE UID=@UID;
SELECT @INFO2=Count() FROM UserTransInfo WHERE UID=@UID;
SELECT @INFO3=Count() FROM UserPayInfo WHERE UID=@UID; if @INFO1 =
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 =
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 =
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
*/
sqlserver 存储过程 增加的更多相关文章
- SqlServer存储过程学习笔记(增删改查)
* IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值. CREATE PROCEDURE [dbo].[PR_NewsAffiche_AddNewsEntity] ( ...
- SQLSERVER存储过程语法详解
CREATE PROC [ EDURE ] procedure_name [ ; number ] [ { @parameter data_type } [ VARYING ] [ = default ...
- SqlServer存储过程(增删改查)
* IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值. CREATE PROCEDURE [dbo].[PR_NewsAffiche_AddNewsEntity] ( ...
- SQLSERVER存储过程的基本语法实例
SQLSERVER存储过程的基本语法实例 SQLSERVER存储过程的基本语法实例 一.定义变量--简单赋值 declare @a intset @a=5 print @a --使用select语句赋 ...
- 解剖SQLSERVER 第十五篇 SQLSERVER存储过程的源文本存放在哪里?(译)
解剖SQLSERVER 第十五篇 SQLSERVER存储过程的源文本存放在哪里?(译) http://improve.dk/where-does-sql-server-store-the-sourc ...
- Sqlserver 存储过程中结合事务的代码
Sqlserver 存储过程中结合事务的代码 --方式一 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ ...
- SQLServer 存储过程嵌套事务处理
原文:SQLServer 存储过程嵌套事务处理 某个存储过程可能被单独调用,也可能由其他存储过程嵌套调用,则可能会发生嵌套事务的情形. 下面是一种解决存储过程嵌套调用的通用代码,在不能确定存储过程是否 ...
- 创建并在项目中调用SQLSERVER存储过程的简单示例
使用SQLSERVER存储过程可以很大的提高程序运行速度,简化编程维护难度,现已得到广泛应用.创建存储过程 和数据表一样,在使用之前需要创建存储过程,它的简明语法是: 引用: Create PROC ...
- SqlServer存储过程详解
SqlServer存储过程详解 1.创建存储过程的基本语法模板: if (exists (select * from sys.objects where name = 'pro_name')) dro ...
随机推荐
- Python 函数返回值
本章详细介绍 返回值: 0x 00 返回值简介 0x 01 指定返回值与隐含返回值 0x 02 return 语句位置与多条 return 语句 0x 03 返回值类型 0x 04 函数嵌套 0x 0 ...
- swaggerui在asp.net web api core 中的应用
Swaggerui 可以为我们的webapi提供美观的在线文档,如下图: 实现步骤: NuGet Packages Install-Package Swashbuckle.AspNetCore 在s ...
- zanphp 初探----安装篇
安装 zanphp 的安装详细步骤具体在 http://zanphpdoc.zanphp.io/,但是安装的时候,还是踩了一些坑,Mac 和 Ubuntu 我都安装过, 分享大家注意一下. PHP 版 ...
- Django的分页器(paginator)
先导入模块: from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger 分页器paginator 下面的所有方法 ...
- 对NumPy中dot()函数的理解
今天学习到numpy基本的运算方法,遇到了一个让我比较难理解的问题.就是dot函数是如何对矩阵进行运算的. 一.dot()的使用 参考文档:https://docs.scipy.org/doc/num ...
- hdu 2669 Romantic 扩展欧几里得
Now tell you two nonnegative integer a and b. Find the nonnegative integer X and integer Y to satisf ...
- JavaScript学习总结(一)——ECMAScript、BOM、DOM(核心、浏览器对象模型与文档对象模型)
一.JavaScript简介 JavaScript是一种解释执行的脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型,它遵循ECMAScript标准.它的解释器被称为JavaScript引 ...
- 怎么配置Jupyter Notebook默认启动目录?
前言 系统环境:win10 x64:跟环境也没啥关系,在LInux下也一样... 前段时间重换了系统后,发现Jupyter Notebook的默认启动目录不太对呀,所以,就翻到了以前的笔记,还是记在这 ...
- c++邻接表存储图(无向),并用广度优先和深度优先遍历(实验)
一开始我是用c写的,后面才发现广搜要用到队列,所以我就直接使用c++的STL队列来写, 因为不想再写多一个队列了.这次实验写了两个多钟,因为要边写边思考,太菜了哈哈. 主要参考<大话数据结构&g ...
- spring boot与jdbcTemplate的整合案例2
简单入门了spring boot后,接下来写写跟数据库打交道的案例.博文采用spring的jdbcTemplate工具类与数据库打交道. 下面是搭建的springbootJDBC的项目的总体架构图: ...