-- 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. C语言 - cJSON解析特定格式 含有数组array类型的数据

    在ESP32中使用了cJSON库,发现很好用.最近服务器端的JSON格式越来越多样,还是有些注意点,需要做下笔记记录下来. cJSON *MAC_arry = cJSON_GetObjectItem( ...

  2. 搭建apache2.4+php7+mysql+phpmyadmin

    apache2.2不支持php7,会报错 cannot load php7apache2_4.dll into server 前排提示:保证安装文件夹和我的一致可以省事很多哦 下载地址 下载apach ...

  3. ndarray笔记

    Numpy的介绍 1. Ndarray:N-dimensional array, N维数组 2. 一种由相同类型的元素组成的多维数组,元素数量是事先指定好的 例:建立Ndarray多维数组    nd ...

  4. 大话OSI七层协议

    大白话OSI七层协议 互联网的本质就是一系列的网络协议,这个协议就叫OSI协议(一系列协议),按照功能不同,分工不同,人为的分层七层.实际上这个七层是不存在的.没有这七层的概念,只是人为的划分而已.区 ...

  5. Redis的bind的误区(转)

    原文1:https://blog.csdn.net/cw_hello1/article/details/83444013 原文2:https://www.cnblogs.com/suiyueqiann ...

  6. NavigatorOnLine.onLine——判断设备是否可以上网

    概述:返回浏览器的联网状态.正常联网(在线)返回true,不正常联网(离线)返回false.一旦浏览器的联网状态发生改变,该属性值也会随之变化. 1.语法 let online = window.na ...

  7. sql注入测试(1)---概念概述

    在进行java web 测试时,经常会忽略的测试种类就是sql注入测试,这类缺陷造成的原因是开发技术在这方面欠缺的表现,虽然不常见,但一旦有这类缺陷,就很因此对运营的数据造成很多不必要的损失,所以,还 ...

  8. (二十一)SpringBoot之集成mybatis:使用mybatis xml

    一.引入maven依赖 <dependencies> <dependency> <groupId>org.springframework.boot</grou ...

  9. 一步一步写News App(一)

    一. 新建一个安卓工程,安卓版本全部选2.3.3 二.第一步,添加一个tabhost控件 在MainActivity中声明TabHost tabHost; 然后新建一个private void ini ...

  10. 史上最简单Git入门教程

    一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 工作原理 / 流程: Workspace:工作区Index / Stage:暂存区Repository:仓库区(或本地仓库)Remo ...