附上SQL Server的存储过程例子

代码如下,看了就明白:

--添加项目大类存储过程
use chaiqianD2
go

if object_id(‘p_InsertBigType‘, ‘p‘) is not null
drop procedure p_InsertBigType

go
create procedure p_InsertBigType
@Name nvarchar(50)              --[大类名称]
as
begin
    insert into
    [项目大类]([大类名称])
    values(@name)
end
    

2、稍微难点滴,大部分都用不上吧

--添加户主和家庭信息
USE chaiqianD2

IF OBJECT_ID(‘p_InsertFamilyMember‘, ‘p‘) IS NOT NULL
DROP PROCEDURE p_InsertFamilyMember

GO
CREATE PROCEDURE p_InsertFamilyMember
    @name NVARCHAR(20),               --姓名
    @sex CHAR(2),                     --性别
    @idNumber NVARCHAR(20),           --身份证号
    @workUnit NVARCHAR(50),           --工作单位
    @workUnitAddress NVARCHAR(50),    --工作单位地址
    @accountAddress NVARCHAR(50),     --户口所在地
    @accountNature CHAR(10),          --户口性质
    @residentialAddress NVARCHAR(50), --居住地址
    @mobileNumber CHAR(12),           --手机号码
    @remarks NVARCHAR(200),           --备注
    @titles NVARCHAR(10),             --称谓
    @nation NVARCHAR(15),             --民族
    @politicStatus NVARCHAR(20),      --政治面貌

    @familyId INT = NULL,             --家庭编号
    @accounts INT,                    --户口总数
    @houseNature NVARCHAR(10),        --房屋性质
    @phoneNumber NVARCHAR(12),        --电话号码
    @familyAddress NVARCHAR(50),      --家庭地址

    @projectId INT,                   --拆迁项目编号
    @priorityBusinessArea FLOAT,      --可优购营业房面积
    @priorityHousingArea FLOAT,       --可优购住房面积

    @typistId INT,                    --录入员职位流水号
    @flag INT = 0                     --标志信息,0:添加家庭成员, 1:添加户主信息和家庭信息
AS
BEGIN
    SET XACT_ABORT ON;--这一句必须加上
    BEGIN TRANSACTION myTran
    --添加家庭信息
    IF @flag = 1
    BEGIN
        INSERT INTO 家庭(家庭人口数目, 户口总数, 房屋性质, 电话号码, 家庭地址,  职位流水号_录入员)
        VALUES (0,@accounts, @houseNature, @phoneNumber, @familyAddress,@typistId)

        --获取家庭编号
        SELECT @familyId = MAX(家庭编号)
        FROM 家庭
        WHERE 职位流水号_录入员 = @typistId
    END

    IF @flag = 1
    BEGIN
        INSERT INTO 家庭结算(拆迁项目编号, 家庭编号, 可优购营业房面积, 可优购住房面积)
        VALUES (@projectId, @familyId, @priorityBusinessArea, @priorityHousingArea)
    END

    --添加家庭成员
    INSERT INTO 家庭成员(家庭编号, 姓名, 性别, 身份证号, 工作单位,工作单位地址, 户口所在地, 户口性质, 居住地址, 手机号码, 备注, 称谓, 民族, 政治面貌)
    VALUES (@familyId, @name, @sex, @idNumber, @workUnit, @workUnitAddress, @accountAddress, @accountNature,@residentialAddress, @mobileNumber, @remarks, @titles, @nation, @politicStatus)

    --家庭人口数目加一
    UPDATE 家庭
    SET 家庭人口数目 = 家庭人口数目 + 1
    WHERE 家庭编号 = @familyId
    COMMIT TRANSACTION myTran
END 

时间: 2024-08-26 00:25:50

附上SQL Server的存储过程例子的相关文章

SQL Server中存储过程 比 直接运行SQL语句慢的原因

问题是存储过程的Parameter sniffing 在很多的资料中都描述说SQLSERVER的存储过程较普通的SQL语句有以下优点: 1. 存储过程只在创造时进行编译即可,以后每次执行存储过程都不需再重新编译,而我们通常使用的SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度. 2. 经常会遇到复杂的业务逻辑和对数据库的操作,这个时候就会用SP来封装数据库操作.当对数据库进行复杂操作时(如对多个表进行 Update,Insert,Query,Delete时),可将此复杂操作用

SQL Server中存储过程比直接运行SQL语句慢的原因

原文:SQL Server中存储过程比直接运行SQL语句慢的原因 在很多的资料中都描述说SQLSERVER的存储过程较普通的SQL语句有以下优点: 1.       存储过程只在创造时进行编译即可,以后每次执行存储过程都不需再重新编译,而我们通常使用的SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度. 2.       经常会遇到复杂的业务逻辑和对数据库的操作,这个时候就会用SP来封装数据库操作.当对数据库进行复杂操作时(如对多个表进行 Update,Insert,Query

在sql server中建存储过程,如果需要参数是一个可变集合怎么处理?

在sql server中建存储过程,如果需要参数是一个可变集合的处理 原存储过程,@objectIds 为可变参数,比如 110,98,99 ALTER PROC [dbo].[Proc_totalScore] @categoryKey int, @objectIds VARCHAR(MAX) AS BEGIN      SELECT c.Name,AVG(e.Score) Score FROM dbo.Sys_com_comment_main m      INNER JOIN dbo.sys

SQL Server创建存储过程(转载)

什么是存储过程? q       存储过程(procedure)类似于C语言中的函数 q       用来执行管理任务或应用复杂的业务规则 q       存储过程可以带参数,也可以返回结果 q       存储过程可以包含数据操纵语句.变量.逻辑 控制语句等 存储过程的优点 (1)执行速度快. 存储过程创建是就已经通过语法检查和性能优化,在执行时无需每次编译. 存储在数据库服务器,性能高. (2)允许模块化设计. 只需创建存储过程一次并将其存储在数据库中,以后即可在程序中调用该过程任意次.存储

SQL Server中的CLR编程——用.NET为SQL Server编写存储过程和函数

原文:SQL Server中的CLR编程--用.NET为SQL Server编写存储过程和函数 很早就知道可以用.NET为SQL Server2005及以上版本编写存储过程.触发器和存储过程的,不过之前开发的系统要么因为历史原因用的是SQL2000要么根本用不着在SQL Server中启用CLR,所以一直没有尝试.最近因为项目的原因,在这方面做了一个调研,现在在这里分享一下心得. 首先要说明的是要在SQL Server中启用CLR必须是在SQL Server2005及以上版本,其次在默认情况下是

SQL SERVER分区具体例子详解

在日常工作中,我们会遇到以下的情况,一个表每日数万级的增长,而查询的数据通常是在本月或今年,以前的数据偶尔会用到,但查询和插入的效率越来越慢,用数据库分区会有助于解决这个问题.关于分区的理论知识网上很多我这里就不在累赘,我从一个实际例子出发,看如何将一个已经运行了很长时间的普通表进行分区. 回到目录 提出问题 需解决问题:有一个数据表数据很大,我们通常的查询是在一个季度中.我们需要将以往年份的数据按不同年份存在文件组里,当年的数据分为4个季度存,如果到了新的一年,将之前4个季度的合并到一年中,新

Reusing dialogs with a dialog pool--一个sql server service broker例子

一个sql server service broker例子 ----------------------------------- USE master GO -------------------------------------------------- -- Create demo database section -------------------------------------------------- IF EXISTS (SELECT name FROM sys.data

SQL SERVER 系统存储过程

Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这样就可以提高存储过程的性能. Ø 存储过程的概念 存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行. 存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数.输出参数.返回单个或多个结果集以及返回值. 由于存储过程在创建时即在数据库服务器上进

SQL Server 2014存储过程的备份和还原

Sql Server 2014存储过程备份和恢复... 1 1.      备份存储过程:... 1 2.      还原... 8 Sql Server 2014存储过程备份和恢复 1. 备份存储过程: 在数据库管理软件中先备份好存储过程 操作步骤:数据库->可编程性->存储过程 看到有几个存储过程,然后 选择生产脚本 选择下一步 还可以展开选择要备份的存储过程: 选择下一步,设置脚本编写选项:确定就好: 选择确定之后选择下一步 就开始备份存储过程了: 备份完成: 在磁盘上找到该存储过程的备