-- exec sp_helptext add_book1

CREATE proc add_book1      --创建存储过程

@DocCode VARCHAR()     --创建参数 

as

BEGIN

INSERT INTO book_new_msg (

book_num,

book_msg,

book_name,

book_class,

price,

ware_people,

Docdate,

doctype

)

SELECT

a.book_num,

a.boo_msg,

a.book_name,

a.book_class,

a.price,

b.ware_people,

b.DocDate,

b.doctype

FROM

BOOK_MSG1 a

INNER JOIN BOOK_WARE1 b ON a.DocCode = b.Doccode

WHERE

a.DocCode = @DocCode

END

BEGIN

CREATE TABLE #T (book_num INT, book_sum INT)

INSERT INTO #T (book_num, book_sum) 

SELECT

book_num,

SUM (book_count)

FROM

book_msg1

WHERE

DocCode= @DocCode

GROUP BY

book_num
UPDATE a SET book_sum = ISNULL(a.book_sum, ) + b.book_sum FROM book_sun a INNER JOIN #T b ON a.book_num = b.book_num INSERT INTO book_sun (book_num, book_sum) SELECT a.book_num, a.book_sum FROM #t a LEFT JOIN book_sun b ON a.book_num = b.book_num WHERE ISNULL(b.book_num, '') = '' END

改 存储过程利用 inner join 和left join 减少了 if else 判断的操作提高了效率

/*

    成品出货日期(取最早)对应 入库的时间

    fqh  2019-7-2

*/

CREATE    PROCEDURE  USP_PROD_DELIVERY

(

    @begindate        DATETIME,

    @enddate        DATETIME,

    @cltcodehd        VARCHAR()  = '',

    @cltnamehd        VARCHAR() = '',

    @stcodehd        VARCHAR()  = '',

    @stnamehd        VARCHAR()  = ''

)

AS

BEGIN

--返回表

CREATE   TABLE  #T

(

    lot_no            VARCHAR(),

    style            VARCHAR(),

    modelcode        VARCHAR(),

    docdate            DATETIME,

    cltcode            VARCHAR(),

    cltname            VARCHAR(),

    stcode            VARCHAR(),

    stname            VARCHAR(),

    out_qty            INT,

    in_date            VARCHAR(),

    in_qty            INT

)

CREATE  INDEX  IX_#T_LOT_NO        ON #T(LOT_NO)

INSERT  INTO   #T(lot_no,docdate,stcode,out_qty,in_date,in_qty)

SELECT

    m.refcodeitem,m.out_date,m.stcode,m.out_qty,n.periodid,n.in_qty

FROM

(

-- 取出指令最早出库时间&累计出库数

SELECT 

    b.refcodeitem,MIN(a.docdate) AS out_date,a.stcode,SUM(b.basedigit)  AS out_qty

FROM        imatdochd        a WITH(NOLOCK)

INNER  JOIN    imatdocitem        b WITH(NOLOCK)    ON a.doccode   = b.doccode

WHERE 

        a.docdate    >= @begindate

    AND a.docdate   <= @enddate

    AND (@stcodehd    = ''  OR a.stcode = @stcodehd)

    AND (@cltcodehd = ''  OR a.cltcode = @cltcodehd) 

    AND a.formid     = 

    AND    a.docstatus  >= 

    AND LEFT(b.refcodeitem,) NOT IN('SC')

GROUP BY b.refcodeitem,a.stcode    

) m

INNER  JOIN 

(

-- 取出每次指令入库时间&数量

SELECT 

    b.refcodeitem,a.periodid,a.stcode,SUM(b.basedigit)    AS  in_qty

FROM

            imatdochd        a WITH(NOLOCK)

INNER JOIN  imatdocitem        b WITH(NOLOCK)  ON a.doccode = b.doccode

WHERE    

        a.formid        = 

    AND a.docstatus        >= 

GROUP BY b.refcodeitem,a.periodid,a.stcode

) n 

ON  m.refcodeitem = n.refcodeitem AND m.stcode = n.stcode 

UPDATE   a

SET    modelcode     = b.modelcode,

       style         = b.style,

       cltname         = b.cltname

FROM   #t  a INNER JOIN  proorderhd  b WITH(NOLOCK) ON a.lot_no = b.predoccode

UPDATE  a

SET    stname = b.stname

FROM  #t a INNER JOIN  ostorage  b WITH(NOLOCK) ON a.stcode = b.stcode 

SELECT  *FROM  #t ORDER BY docdate  ASC  

DROP   TABLE  #T 

END

使用索引降低查询速度, 使用聚合函数 获取查询内容,  使用select 套select  加inner join 获取 链接数据

update 修改 数据  ,利用     ''update set 字段=from  表  inner join 表 on 字段=字段''                 的方式 进行修改

UPDATE  pc_forecast_mtl_type set  memo=(
SELECT a.memo from MTL_STORE_AGE_DETAIL_INPUT a INNER JOIN pc_forecast_mtl_type b
on a.mtl_no=b.matcode ) ,
plandate =(
SELECT a.plandate from MTL_STORE_AGE_DETAIL_INPUT a INNER JOIN pc_forecast_mtl_type b
on a.mtl_no=b.matcode where a.mtl_no=b.matcode ) update a
set memo = b.memo
from pc_forecast_mtl_type a inner join MTL_STORE_AGE_DETAIL_INPUT b
on a.matcode = b.mtl_no
where a.matcode =b.mtl_no

insert into  select  的使用

INSERT INTO #t_mtl(vndcode,matcode)

SELECT vndcode,matcode

FROM proprice_sheet 

WHERE (ISNULL(@vndcodehd,'') = '' OR vndcode = @vndcodehd)

  AND (ISNULL(@matcodehd,'') = '' OR matcode = @matcodehd)

  AND ISNULL(check_flag,) = 

返回数据 类型结果

/*
替换核料单里成易料号 为 维涛料号
*/ alter PROCEDURE USP_UPT_CY_MTL_NO
@doccode VARCHAR(),
@memo VARCHAR() OUTPUT
AS
BEGIN -- 把成易料号转成 维涛料号
UPDATE a
SET matcode = b.matcode
FROM probomitem a INNER JOIN proimatgeneral b ON a.matcode = cy_code
WHERE a.doccode = @doccode --根据维涛料号取得 材料名称等资料
UPDATE probomitem
SET matname = b.matname,
colortext = b.color,
bomspecial = b.standardmode,
baseuom = b.uom,
uomrate = b.uomrate,
baseuomrate = b.baseuomrate
FROM probomitem a INNER JOIN proimatgeneral b ON a.matcode = b.matcode
WHERE a.doccode = @doccode --取出成易料号无对应的维涛料号资料
SELECT @memo = STUFF((SELECT DISTINCT ','+ a.matcode FROM probomitem a
LEFT JOIN proimatgeneral b WITH(NOLOCK) ON a.matcode = b.cy_code
WHERE doccode = @doccode
AND ISNULL(b.matcode,'') = '' for xml path('')),,,'') SET @memo = @memo + ' 材料未编对应料号!' SELECT @memo END

sql 存储过程记录的更多相关文章

  1. VBA 从sql存储过程-记录集-导入

    cnn.Open cnnstr cmd.ActiveConnection = cnn cmd.CommandTimeout = 120 cmd.CommandText = "dbo.t_bi ...

  2. PL/SQL存储过程编程

    PL/SQL存储过程编程 /**author huangchaobiao *Email:huangchaobiao111@163.com */ PL/SQL存储过程编程(上) 1. Oracle应用编 ...

  3. SQL存储过程分页(通用的拼接SQL语句思路实现)

    多表通用的SQL存储过程分页 案例一: USE [Community] GO /****** Object: StoredProcedure [dbo].[Common_PageList] Scrip ...

  4. sql存储过程几个简单例子

    导读:sql存储是数据库操作过程中比较重要的一个环节,对于一些初学者来说也是比较抽象难理解的,本文我将通过几个实例来解析数据库中的sql存储过程,这样就将抽象的事物形象化,比较容易理解. 例1: cr ...

  5. SQL 存储过程入门(事务)(四)

    SQL 存储过程入门(事务)(四)   本篇我们来讲一下事务处理技术. 为什么要使用事务呢,事务有什么用呢,举个例子. 假设我们现在有个业务,当做成功某件事情的时候要向2张表中插入数据,A表,B表,我 ...

  6. SQL存储过程概念剖析

    一.SQL存储过程的概念,优点及语法 定义:将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来, 那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execut ...

  7. 查询数据库后台Block 的Sql存储过程

    查询数据库后台Block 的Sql存储过程 SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER OFF GO /*记录SQL Server的阻塞情况 wang 200 ...

  8. SQL存储过程和函数

    SQL存储过程: 由来:在具体应用中,一个完整的操作会包含多条SQL语句,在执行过程中需要根据前面SQL语句的执行结果有选择的执行后面的SQL语句.因此,mysql提供了数据库对象存储过程和函数. 定 ...

  9. 用SQL存储过程生成唯一单据号

    用SQL存储过程生成唯一单据号     在一些系统中,经理要生成单据号,为了不使多台客户端生成的单据号重复,一般要在服务端生成这种流水号,本文是在数据库中生成流水号,并且可以生成多种类型的单据号(比如 ...

随机推荐

  1. 编码方式之ASCII、ANSI、Unicode概述

    1.ASCII ASCII全称(American Standard Code for Information Interchange)美国信息交换标准代码,在计算机内部中8位二进制位组成1个字节(8( ...

  2. spring 框架的核心总结

    最近在学习Java语言,从而也学习了SpringFramework 这个大名鼎鼎的框架.从而做一些的记录. 题外话: 学习过几种不同的语言,后来知道所有的编程语言里所有的概念翻来覆去都是一样的事物,只 ...

  3. SAS学习笔记20 CAT函数

  4. Maven配置、使用

    一:什么是Maven Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件. Maven提供了开发人员构建一个完整的生命周期框架,开发人员可以自动完成 ...

  5. Java非常好用的反射框架Reflections

    MAVEN 坐标 <dependency> <groupId>org.reflections</groupId> <artifactId>reflect ...

  6. Project Oberon

    Project Oberon Project Oberon  http://www.projectoberon.com/ Project Oberon 28.11.2018 / 11.12.2018 ...

  7. springboot启动流程(七)ioc容器refresh过程(上篇)

    所有文章 https://www.cnblogs.com/lay2017/p/11478237.html 正文 在前面的几篇文章中,我们看到Environment创建.application配置文件的 ...

  8. Metasploit Penetration (第一夜加班)

    1.最近白天瞒着上班,晚自习看英语,还要瞒着写论文(现在是看,之前的部分章节被老师否定了,现在开始要从新进行整理)所以只有这晚上来开始看我的渗透测试了,发现渗透的很多知识,只要你平时不用很快就会生疏, ...

  9. C# 直播录制视频

    //项目引用 ffmpeg.exe 下载地址http://ffmpeg.org/ var time = DateTime.Now; ; //录制分钟 var fileName = Guid.NewGu ...

  10. js中对new Date() 中转换字符串方法toLocaleString的使用

    提供特定于区域设置的日期和时间格式. dateTimeFormatObj = new Intl.DateTimeFormat([locales][, options]) dateTimeFormatO ...