SQL点滴28—一个简单的存储过程

原文:SQL点滴28—一个简单的存储过程

在表中写入一条数据同事要向另外一个表中写入信息,所以会使用到事务。实际使用的时候还会一次向一个表中吸入多条数据,下面的存储过程,将字符串拆分成数组然后写入到表中。

/****** Object:  StoredProcedure [dbo].[sp_InsertEmployee]    Script Date: 09/17/2012 23:28:42 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

-- =============================================
-- Author:        <Author,,Name>
-- Create date: <Create Date,,>
-- Description:    插入一条雇员数据
-- =============================================
CREATE PROCEDURE [dbo].[sp_InsertEmployee]
-- Add the parameters for the stored procedure here
@Name varchar(50),
@UserName varchar(50),
@Password varchar(50),
@Hierarchy char(1),
@EmployeeTypeID int,
@Sex varchar(5),
@Telphone varchar(20),
@CellPhone varchar(20),
@QQ varchar(20),
@Email varchar(50),
@Statue varchar(20),
@Remark varchar(50),
@ManagerID int,
@Regions varchar(1000)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
declare @ID int
declare @tempSql varchar(2000)

-- Insert statements for procedure here
if exists(select * from Employee where Name=@Name)
    return 0
begin transaction

    insert into [Employee](
    [Name],[UserName],[Password],[Hierarchy],[EmployeeTypeID],[Sex],[Telphone],[CellPhone],[QQ],[Email],[Statue],[Remark],[ManagerID]
    )values(
    @Name,@UserName,@Password,@Hierarchy,@EmployeeTypeID,@Sex,@Telphone,@CellPhone,@QQ,@Email,@Statue,@Remark,@ManagerID
    )
    set @ID = @@IDENTITY
    if exists(select * from Permission where ID=@ID)
    begin
        delete from Permission where EmployeeID=@ID
    end
    else
    begin
        set @tempSql=‘insert into Permission select ‘+str(@ID)+‘, ‘‘‘+replace(@Regions,‘,‘,‘‘‘union select ‘+str(@ID)+‘,‘‘‘)+‘‘‘‘
        exec(@tempSql)
    end

if @@ERROR>0
    begin
    rollback transaction
    end
else
    begin
    commit transaction
    end

END

GO
时间: 2024-10-18 21:36:31

SQL点滴28—一个简单的存储过程的相关文章

SQL点滴17—使用数据库引擎存储过程,系统视图查询,DBA,BI开发人员必备基础知识

原文:SQL点滴17-使用数据库引擎存储过程,系统视图查询,DBA,BI开发人员必备基础知识 在开发过程中会遇到需要弄清楚这个数据库什么时候建的,这个数据库中有多少表,这个存储过程长的什么样子等等信息,今天把自己工作过程中经常用到的一些数据库引擎存储过程,系统视图等等总结一下以备不时之用.下面的知识多是自己总结,有一些参考了MSDN. sp_help 有时候想尽快查出数据库对象的相关信息,这个存储过程就很有用了.使用它可以查询出整个数据库中所有对象的相关信息.直接运行sp_help结果如下图1,

mysql 如何创建一个简单的存储过程

1 用mysql客户端登入2 选择数据库 mysql>use test3 查询当前数据库有哪些存储过程 mysql>show procedure status where Db='test'4 创建一个简单的存储过程 mysql>create procedure hi() select 'hello'; 5 存储过程创建完毕,看怎么调用它 mysql>call hi();显示结果 mysql> call hi(); +-------+ | hello | +-------+

一个简单的存储过程

create procedure proc_pay (@maxmoney int, @minmoney int, @paymonth nvarchar(20)) as begin select 储值方式,sum(台币) from 储值分析 where uid in (select uid from 储值分析 where [email protected] group by uid having sum(台币) between @minmoney and @maxmoney) group by 储

一个简单的存储过程使用事务的例子

在存储过程中使用事务时非常重要,使用数据库可以保持数据的关联完整性,在SQL Server存储过程中使用事务也很简单,举个例子: Create Procedure MyProcedure ( @Param1 nvarchar(10), @Param2 nvarchar(10) ) AS Begin Set NOCUNT ON; Set XACT_ABORT on; Begin Tran Delete from table1 where name='abc'; insert into table2

通过ASP.NET MVC框架 + 原生JavaScript + Ajax + SQL SERVER 实现一个简单的有论坛功能的网站(有通过iis发布的例子)

ASP.NET MVC. M 为Model模型层, V 为View视图层, C 为Controller控制层.要想使用MVC框架来写网站就需要了解M V C 的作用分别为哪些.给大家简单的介绍一下: 1.当你的这个网站要与数据库交互的时候,你可以使用EF创建一个数据库模型,也可以用类存放你所需交互的字段数据.我们往往把这类文件放在model层. 2.view层,存放前端网页的. 3.controller层实现前端网页功能的,在这个层里面我们编写的方法称为action. www.lazyfitne

写一个简单的存储过程实例的笔记

1,运行在phpmyadmin 上,用于插入数据,关联产品与运费表 1 /*定义存储过程分解符*/ 2 delimiter // 3 DROP PROCEDURE IF EXISTS doShipping// 4 CREATE PROCEDURE doShipping() 5 BEGIN 6 /*声明变量*/ 7 DECLARE no_more_record INT DEFAULT 0; 8 DECLARE i INT; 9 DECLARE entityId BIGINT(10); 10 /*创

一个简单的存储过程范例

1 delimiter $$ 2 CREATE PROCEDURE `proc_Ranking`(IN sku VARCHAR(20),IN skuname VARCHAR(20),IN status VARCHAR(20),IN sales VARCHAR(20),IN today VARCHAR(20),IN old_time VARCHAR(20)) 3 BEGIN 4 SET @sku = sku; 5 SET @skuname = skuname; 6 SET @status = st

写一个简单的存储过程

-- MySQL中的三中循环 while . loop .repeat 求 1-n 的和 -- 第一种 while 循环 -- 求 1-n 的和 /* while循环语法: while 条件 DO 循环体; end while; */ create procedure add_calendar(a int) begin declare i int default 1; while i<=a DO -- 循环开始 INSERT INTO calendar(datelist) VALUES( add

创建三个表并写一个简单的存储过程